MoCore GraphQL API - Faro Sandbox
API documentation for the MoCore partner sandbox environment. All external requests require the x-api-key header for authentication.
API Endpoints
https://sandbox.mocore.mo.zone/graphql
Headers
# Required. Partner API key for sandbox authentication.
x-api-key: <your-api-key>
# Required. Apollo Server CSRF prevention header.
apollo-require-preflight: 1
# Required for POST requests.
Content-Type: application/json
Authentication
All API requests to the sandbox must include these headers. Contact MoPhones to receive your API key.
x-api-key: <your-api-key>
apollo-require-preflight: 1
Content-Type: application/json
Example cURL:
curl -X POST https://sandbox.mocore.mo.zone/graphql \
-H "Content-Type: application/json" \
-H "x-api-key: <your-api-key>" \
-H "apollo-require-preflight: 1" \
-d '{"query":"{ customerCursor(pagination: { limit: 10 }) { data { id customer_first_name customer_surname_name } } }"}'
Faro integration domains
Customer management
Primary queries: customer(id), customerCursor(pagination, filters), customersByPhone(phoneNumber), customerByFilters(filters), customersCount(filters).
Mutations: createCustomer(input), updateCustomer(id, input), deleteCustomer(id).
Customers have nested applications and latestApplication fields resolved automatically.
Fields use snake_case: customer_first_name, customer_surname_name, customer_status, customer_id_number, customer_phone_number.
Applications
Queries: application(id), applicationByFilters(filters).
Linked to customers via the applications resolve field on any customer object.
Inventory and products
Inventory: inventory(id), inventoryWithCursorPagination(pagination, filters), inventoryCount(filters), plus CRUD mutations.
Products: product(id), products(filter), productsWithCursorPagination(pagination, filters), activeProducts(categoryId), plus CRUD mutations.
Used for device catalog and stock management.
Loan module (namespace pattern)
Access via loan_module query, then drill into sub-namespaces:
query {
loan_module {
loanContracts {
loanContract(id: "contract-uuid") {
contract_id
customer_id
status
principal_amount
}
}
loanLedger { ... }
loanInstallments { ... }
loanDelinquency { ... }
}
}
Payment module (namespace pattern)
Access via payment_module query:
query {
payment_module {
paymentOrchestrator { ... }
payments { ... }
paymentAdjustments { ... }
}
}
MDM / device locking
devices and deviceLock queries for device management and remote lock/unlock status.
Credit bureau
creditBureauTransaction(id), creditBureauTransactionByFilters(filters), creditBureauTransactionsCursor(pagination, filters) for credit check results.
Namespace pattern
The Loan and Payment modules use a namespace pattern where the top-level query returns a namespace object, and actual operations are accessed as resolve fields on that namespace.
Query loan_module { loanContracts { ... } } rather than loanContract(...) directly.
In the schema reference below, look for LoanModuleNamespace, LoanContractsNamespace, PaymentModuleNamespace types to find all available sub-operations.
Pagination
Most list queries support cursor pagination via CursorPaginationInputType:
query {
customerCursor(
pagination: {
limit: 10
cursor: null
sortField: "created_at"
sortDirection: "DESC"
}
) {
data {
id
customer_first_name
customer_surname_name
customer_status
}
pagination {
cursor
hasMore
}
}
}
Fields: limit (required), cursor (null for first page), sortField, sortDirection (ASC/DESC), direction (NEXT/PREVIOUS).
Other available domains
Beyond the Faro-focused domains above, the API also includes:
- Auth -- user, role, and group management
- Config -- system configuration and onboarding config
- Communication -- messaging and notifications
- Territory -- geographic territory management
- Sales and orders -- order processing, delivery, reconciliation
- Price plans -- pricing, commissions, seller tiers
- After-sale -- returns and refunds
- Audit -- audit trail logging
- Export -- data export functionality
- Partner -- partner management
These are fully queryable in the sandbox. See the schema reference below for details.
Demo data
The sandbox includes 7 seeded customers across loan lifecycle stages:
| Customer | Stage | Notes |
|---|---|---|
| Alice | Active loan | |
| Bob | Delinquent | Device locked |
| Carol | Paid off | |
| David | Pre-loan | Has SPIN/CRB data |
| Eve | Written off | Device locked |
| Frank | Active loan | |
| Grace | Pre-loan | Has SPIN/CRB data |
Mocked integrations
All external integrations return success stubs in the sandbox:
- MDM (NuovoPay/Scalefusion) -- MockMdmProvider
- Payments (M-Pesa/Stripe) -- MockPaymentProvider
- Liveness/KYC (SmileID/SumSub) -- MockLivenessAdapter
- Credit bureaus, KRA -- disabled via env flags
Queries
activeCategories
Response
Returns [CategoryObjectType!]!
Arguments
| Name | Description |
|---|---|
level - Float
|
Example
Query
query activeCategories($level: Float) {
activeCategories(level: $level) {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"level": 987.65}
Response
{
"data": {
"activeCategories": [
{
"category_id": 4,
"name": "xyz789",
"slug": "xyz789",
"description": "xyz789",
"icon_url": "abc123",
"image_url": "abc123",
"required_attributes": {},
"sku_attributes": {},
"parent_category_id": "abc123",
"level": 123.45,
"path": "xyz789",
"sort_order": 123.45,
"is_active": true,
"meta_title": "xyz789",
"meta_description": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
activeConditions
Response
Returns [ConditionObjectType!]!
Example
Query
query activeConditions {
activeConditions {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
Response
{
"data": {
"activeConditions": [
{
"condition_id": 4,
"grade": "xyz789",
"name": "xyz789",
"sort_order": 987,
"color_hex": "abc123",
"badge_icon": "xyz789",
"criteria": {},
"description": "xyz789",
"internal_notes": "xyz789",
"verification_requirements": {},
"warranty_months": 987,
"price_multiplier": 123.45,
"financing_impact": {},
"seller_requirements": {},
"is_active": true,
"available_for_sellers": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
activeFlashSaleItems
Response
Returns [FlashSaleItemObjectType!]!
Example
Query
query activeFlashSaleItems {
activeFlashSaleItems {
flash_sale_item_id
flash_sale_id
seller_catalog_id
product_id
sku_id
original_price
flash_sale_price
discount_percentage
stock_allocated
stock_sold
stock_remaining
max_per_customer
display_priority
is_featured
badge_text
created_at
}
}
Response
{
"data": {
"activeFlashSaleItems": [
{
"flash_sale_item_id": 4,
"flash_sale_id": "abc123",
"seller_catalog_id": "xyz789",
"product_id": "abc123",
"sku_id": "abc123",
"original_price": 987.65,
"flash_sale_price": 123.45,
"discount_percentage": 987.65,
"stock_allocated": 123,
"stock_sold": 123,
"stock_remaining": 987,
"max_per_customer": 123,
"display_priority": 123,
"is_featured": false,
"badge_text": "abc123",
"created_at": "2007-12-03T10:15:30Z"
}
]
}
}
activeFlashSales
Response
Returns [FlashSaleObjectType!]!
Example
Query
query activeFlashSales {
activeFlashSales {
flash_sale_id
title
slug
description
start_date
end_date
status
max_quantity
sold_quantity
min_discount_percentage
is_featured
banner_image
icon_url
countdown_display
priority
participating_sellers
performance_metrics
meta_title
meta_description
created_at
updated_at
}
}
Response
{
"data": {
"activeFlashSales": [
{
"flash_sale_id": "4",
"title": "abc123",
"slug": "xyz789",
"description": "abc123",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 123,
"sold_quantity": 123,
"min_discount_percentage": 987.65,
"is_featured": false,
"banner_image": "abc123",
"icon_url": "abc123",
"countdown_display": false,
"priority": 987,
"participating_sellers": ["abc123"],
"performance_metrics": {},
"meta_title": "xyz789",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
activeInventoryLocations
Response
Returns [InventoryLocationObjectType!]!
Example
Query
query activeInventoryLocations {
activeInventoryLocations {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
lat
lng
}
location_details {
country
county
sub_county
ward
town
landmark
gps_coordinates {
...InventoryCoordinatesObjectTypeFragment
}
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
Response
{
"data": {
"activeInventoryLocations": [
{
"inventory_location_id": 4,
"location_name": "xyz789",
"location_type": "TRANSIT_INBOUND",
"location_code": "abc123",
"address": "abc123",
"city": "xyz789",
"region": "xyz789",
"coordinates": InventoryCoordinatesObjectType,
"location_details": InventoryLocationDetailsObjectType,
"user_id": "abc123",
"manager_id": "abc123",
"capacity": 123,
"current_stock": 987,
"is_active": false,
"operating_hours": {},
"seller_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
activeListings
Response
Returns [SellerCatalogObjectType!]!
Arguments
| Name | Description |
|---|---|
sellerId - ID
|
Example
Query
query activeListings($sellerId: ID) {
activeListings(sellerId: $sellerId) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"sellerId": 4}
Response
{
"data": {
"activeListings": [
{
"seller_catalog_id": 4,
"seller_id": "xyz789",
"sku_id": "xyz789",
"cost_price": 123.45,
"retail_price": 123.45,
"currency": "abc123",
"stock_on_hand": 987,
"reserved_stock": 987,
"is_active": true,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 123,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
]
}
}
activeLoanDevices
Response
Returns [InventoryObjectType!]!
Example
Query
query activeLoanDevices {
activeLoanDevices {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Response
{
"data": {
"activeLoanDevices": [
{
"inventory_id": 4,
"product_id": "xyz789",
"sku_id": "abc123",
"condition_id": "xyz789",
"seller_catalog_id": "xyz789",
"seller_id": "abc123",
"serial_number": "xyz789",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": false,
"qc_report": QCReportType,
"qc_report_link": "xyz789",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 987.65,
"contract_id": "xyz789",
"mdm_status": {},
"batch_number": "xyz789",
"location_id": "xyz789",
"inspection_report": "xyz789",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "xyz789",
"supplier_code": "abc123",
"supplier_order_reference": "abc123",
"customer_id": "abc123",
"sale_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
]
}
}
activeOrderByApplication
Description
Returns the single workable order for an application — the non-cancelled order, preferring one that already has a delivery
Response
Returns an OrderObjectType
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
query activeOrderByApplication($applicationId: ID!) {
activeOrderByApplication(applicationId: $applicationId) {
order_id
customer_id
order_status
payment_status
shipping_address {
street
city
state
postal_code
country
geo {
...OrderGeoFragment
}
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
orderItems {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
deliveries {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
sales {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
deliveryCalls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
}
}
Variables
{"applicationId": "4"}
Response
{
"data": {
"activeOrderByApplication": {
"order_id": "4",
"customer_id": 4,
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "xyz789",
"sub_total": 987.65,
"total_discount": 987.65,
"delivery_fee": 987.65,
"service_fee": 123.45,
"tax_amount": 123.45,
"total_amount": 123.45,
"application_id": "abc123",
"sale_agent_id": "xyz789",
"submitting_agent_id": "abc123",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
}
}
activeProductOffers
Response
Returns [ProductOfferObjectType!]!
Example
Query
query activeProductOffers {
activeProductOffers {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
}
Response
{
"data": {
"activeProductOffers": [
{
"product_offer_id": 4,
"sku_id": 4,
"description": "xyz789",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 123.45,
"minimum_purchase_amount": 123.45,
"maximum_discount_amount": 987.65,
"usage_limit": 123,
"usage_count": 123,
"usage_limit_per_customer": 987,
"promo_code": "xyz789",
"category_filters": ["abc123"],
"brand_filters": ["abc123"],
"applicable_channels": ["abc123"],
"active": true,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
activeProducts
Response
Returns [ProductObjectType!]!
Arguments
| Name | Description |
|---|---|
categoryId - ID
|
Example
Query
query activeProducts($categoryId: ID) {
activeProducts(categoryId: $categoryId) {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Variables
{"categoryId": 4}
Response
{
"data": {
"activeProducts": [
{
"product_id": 4,
"name": "abc123",
"slug": "xyz789",
"brand": "abc123",
"model": "xyz789",
"category_id": "xyz789",
"category": CategoryObjectType,
"description": "xyz789",
"long_description": "abc123",
"base_specifications": {},
"primary_image_url": "xyz789",
"images": ["xyz789"],
"video_url": "xyz789",
"meta_title": "abc123",
"meta_description": "xyz789",
"keywords": ["xyz789"],
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
activeSkus
Response
Returns [SkuObjectType!]!
Arguments
| Name | Description |
|---|---|
productId - ID
|
Example
Query
query activeSkus($productId: ID) {
activeSkus(productId: $productId) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{"productId": 4}
Response
{
"data": {
"activeSkus": [
{
"sku_id": "4",
"product_id": "abc123",
"condition_id": "abc123",
"parent_sku_id": "xyz789",
"level": 987,
"level_attribute_key": "abc123",
"level_attribute_value": "xyz789",
"sku_code": "abc123",
"name": "xyz789",
"attributes": {},
"variant_specifications": {},
"msrp_price": 987.65,
"min_seller_price": 987.65,
"max_seller_price": 987.65,
"suggested_retail_price": 987.65,
"effective_price": 123.45,
"images": ["abc123"],
"weight_grams": 123,
"dimensions_mm": "xyz789",
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
]
}
}
application
Description
Get a single application by ID
Response
Returns an ApplicationEntityGraphQL
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query application($id: ID!) {
application(id: $id) {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
mpesa_statement
bank_statement
back_id
front_id
selfie
}
customer {
personal_info {
...ApplicationPersonalInfoGraphQLFragment
}
identification {
...ApplicationIdentificationGraphQLFragment
}
location {
...ApplicationLocationGraphQLFragment
}
employment {
...ApplicationEmploymentGraphQLFragment
}
credit_history {
...ApplicationCreditHistoryGraphQLFragment
}
product {
...ApplicationProductGraphQLFragment
}
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
previous_next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
credit {
credit
credit_process
pending_kyc_tags
system_crb_score
user_crb_score
final_risk_score
status
prospect_status
resubmission_pending_review
customer_bucket
customer_tag
prospect_model
check_by_risk_model
fate_guide
risk_flag
combined_risk_flag
deposit_requirement
advice_customer
customer_credit_fate_reason
last_modified_credit_status
approved_at
product_id
product_name
product_inventory_id
price_plan_id
price_plan_code
price_plan_name
product_cash_price
resubmission_link
initial_weeks
risk_model
validity {
...ApplicationValidityGraphQLFragment
}
metadata
exemption_record {
...ApplicationExemptionRecordGraphQLFragment
}
}
risk {
risk_flag
previous_loans
high_deposit_overide
}
delivery {
delivery_id
rider_id
mpesa_code
delivery_code
rider_submitted_otp
otp_expiry_time
location {
...ApplicationLocationGraphQLFragment
}
front_id
back_id
delivery_status
notes
order_processing {
...SalesProcessingJobStatusGraphQLFragment
}
sale_creation {
...SalesProcessingJobStatusGraphQLFragment
}
}
legacy_references {
lead_id
prospect_id
application_id
}
metadata
timeline {
lead_created
lead_updated
prospect_created
prospect_updated
customer_created
ready_for_scoring
ready_for_calling
ready_for_decision
called_at
scored_at
decisioned_at
device_needed
liveness_created_date
ready_for_screening
screened_at
paused_financial_statement_at
prospect_submitted_at
resubmission_submitted_at
scoring_started_at
first_scored_at
calling_started_at
first_called_at
decision_started_at
first_decisioned_at
last_modified_credit_status_at
}
references {
lead_id
prospect_id
customer_id
crb_transaction_id
resubmission_id
fate_guide_id
final_fate_guide_id
order_id
}
validation_references {
customer_iprs
customer_kra
customer_mpesa
customer_duplicate
nok_iprs
nok_mpesa
nok_duplicate
risk
mpesa_statement
liveness
pre_screening
}
application_type
normal_high_deposit
activeValidationRecords {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
credit_call {
call_details_id
call_type
credit_call_link
}
call_disposition_id
submission_source
leads_screens {
customer
product
consent
termsAndConditions
kycDocuments
creditQuestions
}
prospects_screens {
liveness
nextOfKin
product
images
}
liveness_check {
method
link
}
consent {
sales_approval
terms_and_conditions
source_of_information
verified
verification_phone
referrer_name
created_at
otp
verified_at
}
staff {
scorer {
...ApplicationStaffMemberGraphQLFragment
}
caller {
...ApplicationStaffMemberGraphQLFragment
}
decisioner {
...ApplicationStaffMemberGraphQLFragment
}
sales_agent {
...ApplicationSalesAgentGraphQLFragment
}
submitting_agent {
...ApplicationSalesAgentGraphQLFragment
}
screener {
...ApplicationSalesAgentGraphQLFragment
}
seller {
...ApplicationSalesAgentGraphQLFragment
}
sfm {
...ApplicationSalesAgentGraphQLFragment
}
}
creditProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
customerProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
salesAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
submittingAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
sfmAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
active_resubmission {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
createdAt
updatedAt
callDisposition {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
validation_records {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
active_validation_records {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
creditCallDetails {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
activeCreditPricePlan {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"application": {
"_id": 4,
"customer_id": "xyz789",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["abc123"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "abc123",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [
ValidationRecordGraphQLEntity
],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
}
}
applicationActiveKycDocuments
Description
Get the resolved media assets for an application's active KYC documents
Response
Returns an ApplicationActiveKycMediaAssetsGraphQL
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
query applicationActiveKycDocuments($applicationId: ID!) {
applicationActiveKycDocuments(applicationId: $applicationId) {
mpesa_statement {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
bank_statement {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
front_id {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
back_id {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
selfie {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
}
}
Variables
{"applicationId": "4"}
Response
{
"data": {
"applicationActiveKycDocuments": {
"mpesa_statement": MediaAssetDto,
"bank_statement": MediaAssetDto,
"front_id": MediaAssetDto,
"back_id": MediaAssetDto,
"selfie": MediaAssetDto
}
}
}
applicationByFilters
Description
Get a single application by specific filters
Response
Returns an ApplicationEntityGraphQL
Arguments
| Name | Description |
|---|---|
filters - ApplicationFilterInput!
|
Example
Query
query applicationByFilters($filters: ApplicationFilterInput!) {
applicationByFilters(filters: $filters) {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
mpesa_statement
bank_statement
back_id
front_id
selfie
}
customer {
personal_info {
...ApplicationPersonalInfoGraphQLFragment
}
identification {
...ApplicationIdentificationGraphQLFragment
}
location {
...ApplicationLocationGraphQLFragment
}
employment {
...ApplicationEmploymentGraphQLFragment
}
credit_history {
...ApplicationCreditHistoryGraphQLFragment
}
product {
...ApplicationProductGraphQLFragment
}
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
previous_next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
credit {
credit
credit_process
pending_kyc_tags
system_crb_score
user_crb_score
final_risk_score
status
prospect_status
resubmission_pending_review
customer_bucket
customer_tag
prospect_model
check_by_risk_model
fate_guide
risk_flag
combined_risk_flag
deposit_requirement
advice_customer
customer_credit_fate_reason
last_modified_credit_status
approved_at
product_id
product_name
product_inventory_id
price_plan_id
price_plan_code
price_plan_name
product_cash_price
resubmission_link
initial_weeks
risk_model
validity {
...ApplicationValidityGraphQLFragment
}
metadata
exemption_record {
...ApplicationExemptionRecordGraphQLFragment
}
}
risk {
risk_flag
previous_loans
high_deposit_overide
}
delivery {
delivery_id
rider_id
mpesa_code
delivery_code
rider_submitted_otp
otp_expiry_time
location {
...ApplicationLocationGraphQLFragment
}
front_id
back_id
delivery_status
notes
order_processing {
...SalesProcessingJobStatusGraphQLFragment
}
sale_creation {
...SalesProcessingJobStatusGraphQLFragment
}
}
legacy_references {
lead_id
prospect_id
application_id
}
metadata
timeline {
lead_created
lead_updated
prospect_created
prospect_updated
customer_created
ready_for_scoring
ready_for_calling
ready_for_decision
called_at
scored_at
decisioned_at
device_needed
liveness_created_date
ready_for_screening
screened_at
paused_financial_statement_at
prospect_submitted_at
resubmission_submitted_at
scoring_started_at
first_scored_at
calling_started_at
first_called_at
decision_started_at
first_decisioned_at
last_modified_credit_status_at
}
references {
lead_id
prospect_id
customer_id
crb_transaction_id
resubmission_id
fate_guide_id
final_fate_guide_id
order_id
}
validation_references {
customer_iprs
customer_kra
customer_mpesa
customer_duplicate
nok_iprs
nok_mpesa
nok_duplicate
risk
mpesa_statement
liveness
pre_screening
}
application_type
normal_high_deposit
activeValidationRecords {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
credit_call {
call_details_id
call_type
credit_call_link
}
call_disposition_id
submission_source
leads_screens {
customer
product
consent
termsAndConditions
kycDocuments
creditQuestions
}
prospects_screens {
liveness
nextOfKin
product
images
}
liveness_check {
method
link
}
consent {
sales_approval
terms_and_conditions
source_of_information
verified
verification_phone
referrer_name
created_at
otp
verified_at
}
staff {
scorer {
...ApplicationStaffMemberGraphQLFragment
}
caller {
...ApplicationStaffMemberGraphQLFragment
}
decisioner {
...ApplicationStaffMemberGraphQLFragment
}
sales_agent {
...ApplicationSalesAgentGraphQLFragment
}
submitting_agent {
...ApplicationSalesAgentGraphQLFragment
}
screener {
...ApplicationSalesAgentGraphQLFragment
}
seller {
...ApplicationSalesAgentGraphQLFragment
}
sfm {
...ApplicationSalesAgentGraphQLFragment
}
}
creditProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
customerProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
salesAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
submittingAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
sfmAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
active_resubmission {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
createdAt
updatedAt
callDisposition {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
validation_records {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
active_validation_records {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
creditCallDetails {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
activeCreditPricePlan {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
}
}
Variables
{"filters": ApplicationFilterInput}
Response
{
"data": {
"applicationByFilters": {
"_id": 4,
"customer_id": "xyz789",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["xyz789"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "abc123",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [
ValidationRecordGraphQLEntity
],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
}
}
applicationCallDetail
Description
Get a single application call detail by ID
Response
Returns an ApplicationCallDetailsType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query applicationCallDetail($id: ID!) {
applicationCallDetail(id: $id) {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
call_status
notes
relation
consent
idNumber
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
}
Variables
{"id": 4}
Response
{
"data": {
"applicationCallDetail": {
"_id": "4",
"application_id": 4,
"status": "abc123",
"notes": "xyz789",
"agent_name": "xyz789",
"caller_id": "abc123",
"delivery_location_type": "xyz789",
"priority": "xyz789",
"call_date": "2007-12-03T10:15:30Z",
"follow_up_required": false,
"customer_location": "abc123",
"employer_info": "xyz789",
"employment_details": "xyz789",
"delivery_location": "abc123",
"product_choice": "xyz789",
"confirmed_price_plan": "abc123",
"geo_address": "abc123",
"delivery_or_collection_location": "abc123",
"other_delivery_notes": "abc123",
"call_type": "NOK",
"call_outcome": "abc123",
"call_notes": "xyz789",
"call_ended_at": "2007-12-03T10:15:30Z",
"call_started_at": "2007-12-03T10:15:30Z",
"call_duration_seconds": 123.45,
"nok": CallDetailsNokType,
"customer_general_location": "abc123",
"preferred_delivery_day": "2007-12-03T10:15:30Z",
"preferred_delivery_slot": "abc123",
"work_location": "abc123",
"work_location_link": "xyz789",
"screening_consent": "abc123",
"accept_loan_terms": "xyz789",
"extras": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
applicationCallDetails
Description
Get all call details matching filters
Response
Returns [ApplicationCallDetailsType!]!
Arguments
| Name | Description |
|---|---|
filters - ApplicationCallDetailsFilterInput
|
Example
Query
query applicationCallDetails($filters: ApplicationCallDetailsFilterInput) {
applicationCallDetails(filters: $filters) {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
call_status
notes
relation
consent
idNumber
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
}
Variables
{"filters": ApplicationCallDetailsFilterInput}
Response
{
"data": {
"applicationCallDetails": [
{
"_id": "4",
"application_id": 4,
"status": "xyz789",
"notes": "abc123",
"agent_name": "xyz789",
"caller_id": "abc123",
"delivery_location_type": "abc123",
"priority": "abc123",
"call_date": "2007-12-03T10:15:30Z",
"follow_up_required": false,
"customer_location": "xyz789",
"employer_info": "abc123",
"employment_details": "abc123",
"delivery_location": "xyz789",
"product_choice": "abc123",
"confirmed_price_plan": "xyz789",
"geo_address": "xyz789",
"delivery_or_collection_location": "abc123",
"other_delivery_notes": "xyz789",
"call_type": "NOK",
"call_outcome": "abc123",
"call_notes": "xyz789",
"call_ended_at": "2007-12-03T10:15:30Z",
"call_started_at": "2007-12-03T10:15:30Z",
"call_duration_seconds": 987.65,
"nok": CallDetailsNokType,
"customer_general_location": "xyz789",
"preferred_delivery_day": "2007-12-03T10:15:30Z",
"preferred_delivery_slot": "xyz789",
"work_location": "abc123",
"work_location_link": "xyz789",
"screening_consent": "abc123",
"accept_loan_terms": "xyz789",
"extras": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
]
}
}
applicationCallDetailsByApplication
Description
Get all call details for an application
Response
Returns [ApplicationCallDetailsType!]!
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
query applicationCallDetailsByApplication($applicationId: ID!) {
applicationCallDetailsByApplication(applicationId: $applicationId) {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
call_status
notes
relation
consent
idNumber
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
}
Variables
{"applicationId": "4"}
Response
{
"data": {
"applicationCallDetailsByApplication": [
{
"_id": 4,
"application_id": "4",
"status": "xyz789",
"notes": "abc123",
"agent_name": "xyz789",
"caller_id": "abc123",
"delivery_location_type": "xyz789",
"priority": "abc123",
"call_date": "2007-12-03T10:15:30Z",
"follow_up_required": false,
"customer_location": "xyz789",
"employer_info": "abc123",
"employment_details": "abc123",
"delivery_location": "abc123",
"product_choice": "abc123",
"confirmed_price_plan": "xyz789",
"geo_address": "abc123",
"delivery_or_collection_location": "xyz789",
"other_delivery_notes": "xyz789",
"call_type": "NOK",
"call_outcome": "xyz789",
"call_notes": "abc123",
"call_ended_at": "2007-12-03T10:15:30Z",
"call_started_at": "2007-12-03T10:15:30Z",
"call_duration_seconds": 123.45,
"nok": CallDetailsNokType,
"customer_general_location": "xyz789",
"preferred_delivery_day": "2007-12-03T10:15:30Z",
"preferred_delivery_slot": "abc123",
"work_location": "abc123",
"work_location_link": "xyz789",
"screening_consent": "abc123",
"accept_loan_terms": "xyz789",
"extras": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
]
}
}
applicationCallDetailsCount
Description
Get count of call details matching filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - ApplicationCallDetailsFilterInput
|
Example
Query
query applicationCallDetailsCount($filters: ApplicationCallDetailsFilterInput) {
applicationCallDetailsCount(filters: $filters)
}
Variables
{"filters": ApplicationCallDetailsFilterInput}
Response
{"data": {"applicationCallDetailsCount": 987.65}}
applicationCallDetailsCursor
Description
Get paginated call details using cursor-based pagination
Response
Returns a CursorPaginatedApplicationCallDetails!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - ApplicationCallDetailsFilterInput
|
|
regexFilters - ApplicationCallDetailsFilterInput
|
Example
Query
query applicationCallDetailsCursor(
$pagination: CursorPaginationInputType,
$filters: ApplicationCallDetailsFilterInput,
$regexFilters: ApplicationCallDetailsFilterInput
) {
applicationCallDetailsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": ApplicationCallDetailsFilterInput,
"regexFilters": ApplicationCallDetailsFilterInput
}
Response
{
"data": {
"applicationCallDetailsCursor": {
"data": [ApplicationCallDetailsType],
"pagination": CursorPaginationMetadata
}
}
}
applicationCallDetailsOffset
Description
Get paginated call details using offset-based pagination
Response
Returns an OffsetPaginatedApplicationCallDetails!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - ApplicationCallDetailsFilterInput
|
|
regexFilters - ApplicationCallDetailsFilterInput
|
Example
Query
query applicationCallDetailsOffset(
$pagination: OffsetPaginationInputType,
$filters: ApplicationCallDetailsFilterInput,
$regexFilters: ApplicationCallDetailsFilterInput
) {
applicationCallDetailsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": ApplicationCallDetailsFilterInput,
"regexFilters": ApplicationCallDetailsFilterInput
}
Response
{
"data": {
"applicationCallDetailsOffset": {
"data": [ApplicationCallDetailsType],
"metadata": OffsetPaginationMetadata
}
}
}
applicationKycMediaAssets
Description
Get all active KYC media asset documents for an application as a flat list
Response
Returns [MediaAssetDto!]!
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
query applicationKycMediaAssets($applicationId: ID!) {
applicationKycMediaAssets(applicationId: $applicationId) {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
}
Variables
{"applicationId": 4}
Response
{
"data": {
"applicationKycMediaAssets": [
{
"_id": 4,
"domain": "AUDIT",
"type": "SELFIE",
"target": "xyz789",
"target_id": "abc123",
"password": "xyz789",
"url": "xyz789",
"name": "abc123",
"content_type": "abc123",
"storage_provider": "S3",
"raw": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
]
}
}
applicationSellerQuote
Description
Get the seller quote for an application
Response
Returns a SellerQuoteType
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
query applicationSellerQuote($applicationId: ID!) {
applicationSellerQuote(applicationId: $applicationId) {
cash_price
available_plans {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
commission {
product_commission
loan_commission
cash_commission
channel_type
commission_type
is_override
commission_override_id
commission_rule {
...CommissionObjectTypeFragment
}
}
seller_id
calculated_at
}
}
Variables
{"applicationId": 4}
Response
{
"data": {
"applicationSellerQuote": {
"cash_price": 123.45,
"available_plans": [PricingCalculationType],
"commission": CommissionCalculationType,
"seller_id": "abc123",
"calculated_at": "2007-12-03T10:15:30Z"
}
}
}
applicationsByCustomerId
Description
Get all applications for a customer
Response
Returns [ApplicationEntityGraphQL!]!
Arguments
| Name | Description |
|---|---|
customerId - String!
|
Example
Query
query applicationsByCustomerId($customerId: String!) {
applicationsByCustomerId(customerId: $customerId) {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
mpesa_statement
bank_statement
back_id
front_id
selfie
}
customer {
personal_info {
...ApplicationPersonalInfoGraphQLFragment
}
identification {
...ApplicationIdentificationGraphQLFragment
}
location {
...ApplicationLocationGraphQLFragment
}
employment {
...ApplicationEmploymentGraphQLFragment
}
credit_history {
...ApplicationCreditHistoryGraphQLFragment
}
product {
...ApplicationProductGraphQLFragment
}
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
previous_next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
credit {
credit
credit_process
pending_kyc_tags
system_crb_score
user_crb_score
final_risk_score
status
prospect_status
resubmission_pending_review
customer_bucket
customer_tag
prospect_model
check_by_risk_model
fate_guide
risk_flag
combined_risk_flag
deposit_requirement
advice_customer
customer_credit_fate_reason
last_modified_credit_status
approved_at
product_id
product_name
product_inventory_id
price_plan_id
price_plan_code
price_plan_name
product_cash_price
resubmission_link
initial_weeks
risk_model
validity {
...ApplicationValidityGraphQLFragment
}
metadata
exemption_record {
...ApplicationExemptionRecordGraphQLFragment
}
}
risk {
risk_flag
previous_loans
high_deposit_overide
}
delivery {
delivery_id
rider_id
mpesa_code
delivery_code
rider_submitted_otp
otp_expiry_time
location {
...ApplicationLocationGraphQLFragment
}
front_id
back_id
delivery_status
notes
order_processing {
...SalesProcessingJobStatusGraphQLFragment
}
sale_creation {
...SalesProcessingJobStatusGraphQLFragment
}
}
legacy_references {
lead_id
prospect_id
application_id
}
metadata
timeline {
lead_created
lead_updated
prospect_created
prospect_updated
customer_created
ready_for_scoring
ready_for_calling
ready_for_decision
called_at
scored_at
decisioned_at
device_needed
liveness_created_date
ready_for_screening
screened_at
paused_financial_statement_at
prospect_submitted_at
resubmission_submitted_at
scoring_started_at
first_scored_at
calling_started_at
first_called_at
decision_started_at
first_decisioned_at
last_modified_credit_status_at
}
references {
lead_id
prospect_id
customer_id
crb_transaction_id
resubmission_id
fate_guide_id
final_fate_guide_id
order_id
}
validation_references {
customer_iprs
customer_kra
customer_mpesa
customer_duplicate
nok_iprs
nok_mpesa
nok_duplicate
risk
mpesa_statement
liveness
pre_screening
}
application_type
normal_high_deposit
activeValidationRecords {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
credit_call {
call_details_id
call_type
credit_call_link
}
call_disposition_id
submission_source
leads_screens {
customer
product
consent
termsAndConditions
kycDocuments
creditQuestions
}
prospects_screens {
liveness
nextOfKin
product
images
}
liveness_check {
method
link
}
consent {
sales_approval
terms_and_conditions
source_of_information
verified
verification_phone
referrer_name
created_at
otp
verified_at
}
staff {
scorer {
...ApplicationStaffMemberGraphQLFragment
}
caller {
...ApplicationStaffMemberGraphQLFragment
}
decisioner {
...ApplicationStaffMemberGraphQLFragment
}
sales_agent {
...ApplicationSalesAgentGraphQLFragment
}
submitting_agent {
...ApplicationSalesAgentGraphQLFragment
}
screener {
...ApplicationSalesAgentGraphQLFragment
}
seller {
...ApplicationSalesAgentGraphQLFragment
}
sfm {
...ApplicationSalesAgentGraphQLFragment
}
}
creditProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
customerProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
salesAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
submittingAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
sfmAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
active_resubmission {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
createdAt
updatedAt
callDisposition {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
validation_records {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
active_validation_records {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
creditCallDetails {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
activeCreditPricePlan {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
}
}
Variables
{"customerId": "abc123"}
Response
{
"data": {
"applicationsByCustomerId": [
{
"_id": 4,
"customer_id": "xyz789",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["abc123"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "abc123",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [
ValidationRecordGraphQLEntity
],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
]
}
}
applicationsCount
Description
Get count of applications matching filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - ApplicationFilterInput
|
Example
Query
query applicationsCount($filters: ApplicationFilterInput) {
applicationsCount(filters: $filters)
}
Variables
{"filters": ApplicationFilterInput}
Response
{"data": {"applicationsCount": 123.45}}
applicationsCursor
Description
Get paginated applications using cursor-based pagination
Response
Returns a CursorPaginatedApplications!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - ApplicationFilterInput
|
|
regexFilters - ApplicationFilterInput
|
Example
Query
query applicationsCursor(
$pagination: CursorPaginationInputType,
$filters: ApplicationFilterInput,
$regexFilters: ApplicationFilterInput
) {
applicationsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": ApplicationFilterInput,
"regexFilters": ApplicationFilterInput
}
Response
{
"data": {
"applicationsCursor": {
"data": [ApplicationEntityGraphQL],
"pagination": CursorPaginationMetadata
}
}
}
applicationsOffset
Description
Get paginated applications using offset-based pagination
Response
Returns an OffsetPaginatedApplications!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - ApplicationFilterInput
|
|
regexFilters - ApplicationFilterInput
|
Example
Query
query applicationsOffset(
$pagination: OffsetPaginationInputType,
$filters: ApplicationFilterInput,
$regexFilters: ApplicationFilterInput
) {
applicationsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": ApplicationFilterInput,
"regexFilters": ApplicationFilterInput
}
Response
{
"data": {
"applicationsOffset": {
"data": [ApplicationEntityGraphQL],
"metadata": OffsetPaginationMetadata
}
}
}
audit_module
Description
Access audit module operations
Response
Returns an AuditModuleNamespace!
Example
Query
query audit_module {
audit_module {
auditLog {
auditLog {
...AuditLogObjectTypeFragment
}
auditLogByFilters {
...AuditLogObjectTypeFragment
}
auditLogCount
auditLogsCursor {
...CursorPaginatedAuditLogsFragment
}
auditLogsOffset {
...OffsetPaginatedAuditLogsFragment
}
createAuditLog {
...AuditLogObjectTypeFragment
}
createNote {
...AuditLogObjectTypeFragment
}
updateAuditLog {
...AuditLogObjectTypeFragment
}
updateAuditLogs
deleteAuditLog
deleteAuditLogs
}
}
}
Response
{
"data": {
"audit_module": {"auditLog": AuditLogNamespace}
}
}
availableInventory
Response
Returns [InventoryObjectType!]!
Example
Query
query availableInventory {
availableInventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Response
{
"data": {
"availableInventory": [
{
"inventory_id": 4,
"product_id": "xyz789",
"sku_id": "abc123",
"condition_id": "xyz789",
"seller_catalog_id": "abc123",
"seller_id": "xyz789",
"serial_number": "abc123",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": true,
"qc_report": QCReportType,
"qc_report_link": "abc123",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 123.45,
"contract_id": "xyz789",
"mdm_status": {},
"batch_number": "xyz789",
"location_id": "xyz789",
"inspection_report": "xyz789",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "xyz789",
"supplier_code": "xyz789",
"supplier_order_reference": "abc123",
"customer_id": "abc123",
"sale_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
]
}
}
bestOfferForProduct
Response
Returns a ProductOfferObjectType
Arguments
| Name | Description |
|---|---|
productId - ID!
|
Example
Query
query bestOfferForProduct($productId: ID!) {
bestOfferForProduct(productId: $productId) {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
}
Variables
{"productId": "4"}
Response
{
"data": {
"bestOfferForProduct": {
"product_offer_id": 4,
"sku_id": "4",
"description": "xyz789",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 987.65,
"minimum_purchase_amount": 123.45,
"maximum_discount_amount": 123.45,
"usage_limit": 987,
"usage_count": 123,
"usage_limit_per_customer": 987,
"promo_code": "xyz789",
"category_filters": ["xyz789"],
"brand_filters": ["abc123"],
"applicable_channels": ["xyz789"],
"active": false,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
bestPriceForSku
Response
Returns a SellerCatalogObjectType
Arguments
| Name | Description |
|---|---|
skuId - ID!
|
Example
Query
query bestPriceForSku($skuId: ID!) {
bestPriceForSku(skuId: $skuId) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"skuId": 4}
Response
{
"data": {
"bestPriceForSku": {
"seller_catalog_id": "4",
"seller_id": "xyz789",
"sku_id": "xyz789",
"cost_price": 123.45,
"retail_price": 123.45,
"currency": "abc123",
"stock_on_hand": 123,
"reserved_stock": 987,
"is_active": true,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 123,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
}
}
calculateEarlyPayoffV2
Response
Returns a JSON!
Example
Query
query calculateEarlyPayoffV2(
$planId: String!,
$cashPrice: Float!,
$months: [Int!]
) {
calculateEarlyPayoffV2(
planId: $planId,
cashPrice: $cashPrice,
months: $months
)
}
Variables
{
"planId": "xyz789",
"cashPrice": 123.45,
"months": [987]
}
Response
{"data": {"calculateEarlyPayoffV2": {}}}
callDisposition
Description
Get a single call disposition by ID
Response
Returns a CallDispositionType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query callDisposition($id: ID!) {
callDisposition(id: $id) {
_id
application_id
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
}
Variables
{"id": "4"}
Response
{
"data": {
"callDisposition": {
"_id": 4,
"application_id": "4",
"application": ApplicationEntityGraphQL,
"disposition": "xyz789",
"notes": "abc123",
"priority": "xyz789",
"next_call_date": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
callDispositionByFilters
Description
Get a single call disposition by specific filters
Response
Returns a CallDispositionType
Arguments
| Name | Description |
|---|---|
filters - CallDispositionFilterInput!
|
Example
Query
query callDispositionByFilters($filters: CallDispositionFilterInput!) {
callDispositionByFilters(filters: $filters) {
_id
application_id
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
}
Variables
{"filters": CallDispositionFilterInput}
Response
{
"data": {
"callDispositionByFilters": {
"_id": "4",
"application_id": "4",
"application": ApplicationEntityGraphQL,
"disposition": "xyz789",
"notes": "xyz789",
"priority": "abc123",
"next_call_date": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
callDispositionsByApplication
Description
Get all call dispositions for an application
Response
Returns [CallDispositionType!]!
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
query callDispositionsByApplication($applicationId: ID!) {
callDispositionsByApplication(applicationId: $applicationId) {
_id
application_id
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
}
Variables
{"applicationId": 4}
Response
{
"data": {
"callDispositionsByApplication": [
{
"_id": "4",
"application_id": "4",
"application": ApplicationEntityGraphQL,
"disposition": "xyz789",
"notes": "xyz789",
"priority": "abc123",
"next_call_date": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
]
}
}
callDispositionsByCustomer
Description
Get all call dispositions for a customer
Response
Returns [CallDispositionType!]!
Arguments
| Name | Description |
|---|---|
customerId - ID!
|
Example
Query
query callDispositionsByCustomer($customerId: ID!) {
callDispositionsByCustomer(customerId: $customerId) {
_id
application_id
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
}
Variables
{"customerId": 4}
Response
{
"data": {
"callDispositionsByCustomer": [
{
"_id": 4,
"application_id": 4,
"application": ApplicationEntityGraphQL,
"disposition": "xyz789",
"notes": "abc123",
"priority": "abc123",
"next_call_date": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
]
}
}
callDispositionsCount
Description
Get count of call dispositions matching filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - CallDispositionFilterInput
|
Example
Query
query callDispositionsCount($filters: CallDispositionFilterInput) {
callDispositionsCount(filters: $filters)
}
Variables
{"filters": CallDispositionFilterInput}
Response
{"data": {"callDispositionsCount": 123.45}}
callDispositionsCursor
Description
Get paginated call dispositions using cursor-based pagination
Response
Returns a CursorPaginatedCallDispositions!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - CallDispositionFilterInput
|
|
regexFilters - CallDispositionFilterInput
|
Example
Query
query callDispositionsCursor(
$pagination: CursorPaginationInputType,
$filters: CallDispositionFilterInput,
$regexFilters: CallDispositionFilterInput
) {
callDispositionsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": CallDispositionFilterInput,
"regexFilters": CallDispositionFilterInput
}
Response
{
"data": {
"callDispositionsCursor": {
"data": [CallDispositionType],
"pagination": CursorPaginationMetadata
}
}
}
callDispositionsOffset
Description
Get paginated call dispositions using offset-based pagination
Response
Returns an OffsetPaginatedCallDispositions!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - CallDispositionFilterInput
|
|
regexFilters - CallDispositionFilterInput
|
Example
Query
query callDispositionsOffset(
$pagination: OffsetPaginationInputType,
$filters: CallDispositionFilterInput,
$regexFilters: CallDispositionFilterInput
) {
callDispositionsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": CallDispositionFilterInput,
"regexFilters": CallDispositionFilterInput
}
Response
{
"data": {
"callDispositionsOffset": {
"data": [CallDispositionType],
"metadata": OffsetPaginationMetadata
}
}
}
canManageRole
Response
Returns a Boolean!
Example
Query
query canManageRole(
$managerRoleName: String!,
$targetRoleName: String!,
$realm: String
) {
canManageRole(
managerRoleName: $managerRoleName,
targetRoleName: $targetRoleName,
realm: $realm
)
}
Variables
{
"managerRoleName": "abc123",
"targetRoleName": "abc123",
"realm": "xyz789"
}
Response
{"data": {"canManageRole": false}}
categories
Response
Returns [CategoryObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - CategoryFilterInput
|
Example
Query
query categories($filter: CategoryFilterInput) {
categories(filter: $filter) {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"filter": CategoryFilterInput}
Response
{
"data": {
"categories": [
{
"category_id": "4",
"name": "xyz789",
"slug": "abc123",
"description": "abc123",
"icon_url": "xyz789",
"image_url": "abc123",
"required_attributes": {},
"sku_attributes": {},
"parent_category_id": "abc123",
"level": 987.65,
"path": "abc123",
"sort_order": 123.45,
"is_active": false,
"meta_title": "xyz789",
"meta_description": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
categoriesCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - CategoryFilterInput
|
Example
Query
query categoriesCount($filters: CategoryFilterInput) {
categoriesCount(filters: $filters)
}
Variables
{"filters": CategoryFilterInput}
Response
{"data": {"categoriesCount": 123.45}}
categoriesWithCursorPagination
Response
Returns a CursorPaginatedCategories!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - CategoryFilterInput
|
|
regexFilters - CategoryFilterInput
|
Example
Query
query categoriesWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: CategoryFilterInput,
$regexFilters: CategoryFilterInput
) {
categoriesWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": CategoryFilterInput,
"regexFilters": CategoryFilterInput
}
Response
{
"data": {
"categoriesWithCursorPagination": {
"data": [CategoryObjectType],
"pagination": CursorPaginationMetadata
}
}
}
categoriesWithOffsetPagination
Response
Returns an OffsetPaginatedCategories!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - CategoryFilterInput
|
|
regexFilters - CategoryFilterInput
|
Example
Query
query categoriesWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: CategoryFilterInput,
$regexFilters: CategoryFilterInput
) {
categoriesWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": CategoryFilterInput,
"regexFilters": CategoryFilterInput
}
Response
{
"data": {
"categoriesWithOffsetPagination": {
"data": [CategoryObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
category
Response
Returns a CategoryObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query category($id: ID!) {
category(id: $id) {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"category": {
"category_id": 4,
"name": "xyz789",
"slug": "abc123",
"description": "xyz789",
"icon_url": "abc123",
"image_url": "xyz789",
"required_attributes": {},
"sku_attributes": {},
"parent_category_id": "xyz789",
"level": 123.45,
"path": "xyz789",
"sort_order": 987.65,
"is_active": false,
"meta_title": "xyz789",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
categoryHierarchy
Response
Returns [CategoryObjectType!]!
Arguments
| Name | Description |
|---|---|
categoryId - ID
|
Example
Query
query categoryHierarchy($categoryId: ID) {
categoryHierarchy(categoryId: $categoryId) {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"categoryId": 4}
Response
{
"data": {
"categoryHierarchy": [
{
"category_id": "4",
"name": "abc123",
"slug": "xyz789",
"description": "xyz789",
"icon_url": "abc123",
"image_url": "xyz789",
"required_attributes": {},
"sku_attributes": {},
"parent_category_id": "xyz789",
"level": 987.65,
"path": "xyz789",
"sort_order": 987.65,
"is_active": false,
"meta_title": "xyz789",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
categoryPath
Response
Returns [CategoryObjectType!]!
Arguments
| Name | Description |
|---|---|
categoryId - ID!
|
Example
Query
query categoryPath($categoryId: ID!) {
categoryPath(categoryId: $categoryId) {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"categoryId": "4"}
Response
{
"data": {
"categoryPath": [
{
"category_id": 4,
"name": "abc123",
"slug": "xyz789",
"description": "xyz789",
"icon_url": "abc123",
"image_url": "abc123",
"required_attributes": {},
"sku_attributes": {},
"parent_category_id": "xyz789",
"level": 123.45,
"path": "abc123",
"sort_order": 987.65,
"is_active": true,
"meta_title": "xyz789",
"meta_description": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
checkProductExists
Example
Query
query checkProductExists(
$brand: String!,
$model: String!
) {
checkProductExists(
brand: $brand,
model: $model
)
}
Variables
{
"brand": "xyz789",
"model": "abc123"
}
Response
{"data": {"checkProductExists": false}}
commission
Response
Returns a CommissionObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
Example
Query
query commission($id: String!) {
commission(id: $id) {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
overrides {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
...AgentProfileObjectTypeFragment
}
commission_rule {
...CommissionObjectTypeFragment
}
}
}
}
Variables
{"id": "xyz789"}
Response
{
"data": {
"commission": {
"id": "4",
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"attribute_type": "ALL",
"commission_value_type": "FLAT",
"sku_id": "abc123",
"min_price": 123.45,
"max_price": 987.65,
"product_commission": 123.45,
"loan_commission": 987.65,
"cash_commission": 123.45,
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sku": SkuObjectType,
"overrides": [CommissionOverrideObjectType]
}
}
}
commissionByFilter
Response
Returns a CommissionObjectType
Arguments
| Name | Description |
|---|---|
filters - CommissionFilterInput
|
Example
Query
query commissionByFilter($filters: CommissionFilterInput) {
commissionByFilter(filters: $filters) {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
overrides {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
...AgentProfileObjectTypeFragment
}
commission_rule {
...CommissionObjectTypeFragment
}
}
}
}
Variables
{"filters": CommissionFilterInput}
Response
{
"data": {
"commissionByFilter": {
"id": 4,
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"attribute_type": "ALL",
"commission_value_type": "FLAT",
"sku_id": "xyz789",
"min_price": 987.65,
"max_price": 123.45,
"product_commission": 123.45,
"loan_commission": 987.65,
"cash_commission": 123.45,
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sku": SkuObjectType,
"overrides": [CommissionOverrideObjectType]
}
}
}
commissionOverride
Response
Returns a CommissionOverrideObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
Example
Query
query commissionOverride($id: String!) {
commissionOverride(id: $id) {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
commission_rule {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
...SkuObjectTypeFragment
}
overrides {
...CommissionOverrideObjectTypeFragment
}
}
}
}
Variables
{"id": "abc123"}
Response
{
"data": {
"commissionOverride": {
"id": "4",
"agent_profile_id": "xyz789",
"commission_rule_id": "abc123",
"product_commission": 987.65,
"loan_commission": 987.65,
"cash_commission": 987.65,
"commission_value_type": "FLAT",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"agent_profile": AgentProfileObjectType,
"commission_rule": CommissionObjectType
}
}
}
commissionOverrideByFilter
Response
Returns a CommissionOverrideObjectType
Arguments
| Name | Description |
|---|---|
filters - CommissionOverrideFilterInput
|
Example
Query
query commissionOverrideByFilter($filters: CommissionOverrideFilterInput) {
commissionOverrideByFilter(filters: $filters) {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
commission_rule {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
...SkuObjectTypeFragment
}
overrides {
...CommissionOverrideObjectTypeFragment
}
}
}
}
Variables
{"filters": CommissionOverrideFilterInput}
Response
{
"data": {
"commissionOverrideByFilter": {
"id": "4",
"agent_profile_id": "abc123",
"commission_rule_id": "abc123",
"product_commission": 123.45,
"loan_commission": 123.45,
"cash_commission": 123.45,
"commission_value_type": "FLAT",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"agent_profile": AgentProfileObjectType,
"commission_rule": CommissionObjectType
}
}
}
commissionOverrides
Response
Returns [CommissionOverrideObjectType!]!
Arguments
| Name | Description |
|---|---|
filters - CommissionOverrideFilterInput
|
Example
Query
query commissionOverrides($filters: CommissionOverrideFilterInput) {
commissionOverrides(filters: $filters) {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
commission_rule {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
...SkuObjectTypeFragment
}
overrides {
...CommissionOverrideObjectTypeFragment
}
}
}
}
Variables
{"filters": CommissionOverrideFilterInput}
Response
{
"data": {
"commissionOverrides": [
{
"id": "4",
"agent_profile_id": "xyz789",
"commission_rule_id": "abc123",
"product_commission": 987.65,
"loan_commission": 123.45,
"cash_commission": 123.45,
"commission_value_type": "FLAT",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"agent_profile": AgentProfileObjectType,
"commission_rule": CommissionObjectType
}
]
}
}
commissionOverridesByAgent
Response
Returns [CommissionOverrideObjectType!]!
Arguments
| Name | Description |
|---|---|
agentProfileId - String!
|
Example
Query
query commissionOverridesByAgent($agentProfileId: String!) {
commissionOverridesByAgent(agentProfileId: $agentProfileId) {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
commission_rule {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
...SkuObjectTypeFragment
}
overrides {
...CommissionOverrideObjectTypeFragment
}
}
}
}
Variables
{"agentProfileId": "abc123"}
Response
{
"data": {
"commissionOverridesByAgent": [
{
"id": 4,
"agent_profile_id": "xyz789",
"commission_rule_id": "xyz789",
"product_commission": 123.45,
"loan_commission": 987.65,
"cash_commission": 987.65,
"commission_value_type": "FLAT",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"agent_profile": AgentProfileObjectType,
"commission_rule": CommissionObjectType
}
]
}
}
commissionOverridesCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - CommissionOverrideFilterInput
|
Example
Query
query commissionOverridesCount($filters: CommissionOverrideFilterInput) {
commissionOverridesCount(filters: $filters)
}
Variables
{"filters": CommissionOverrideFilterInput}
Response
{"data": {"commissionOverridesCount": 987.65}}
commissionOverridesCursorPaginated
Response
Returns a CursorsPaginatedCommissionOverrides!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - CommissionOverrideFilterInput
|
|
regexFilters - CommissionOverrideFilterInput
|
Example
Query
query commissionOverridesCursorPaginated(
$pagination: CursorPaginationInputType,
$filters: CommissionOverrideFilterInput,
$regexFilters: CommissionOverrideFilterInput
) {
commissionOverridesCursorPaginated(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
...AgentProfileObjectTypeFragment
}
commission_rule {
...CommissionObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": CommissionOverrideFilterInput,
"regexFilters": CommissionOverrideFilterInput
}
Response
{
"data": {
"commissionOverridesCursorPaginated": {
"data": [CommissionOverrideObjectType],
"pagination": CursorPaginationMetadata
}
}
}
commissionOverridesOffsetPaginated
Response
Returns an OffsetPaginatedCommissionOverrides!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - CommissionOverrideFilterInput
|
|
regexFilters - CommissionOverrideFilterInput
|
Example
Query
query commissionOverridesOffsetPaginated(
$pagination: OffsetPaginationInputType,
$filters: CommissionOverrideFilterInput,
$regexFilters: CommissionOverrideFilterInput
) {
commissionOverridesOffsetPaginated(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
...AgentProfileObjectTypeFragment
}
commission_rule {
...CommissionObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": CommissionOverrideFilterInput,
"regexFilters": CommissionOverrideFilterInput
}
Response
{
"data": {
"commissionOverridesOffsetPaginated": {
"data": [CommissionOverrideObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
commissions
Response
Returns [CommissionObjectType!]!
Arguments
| Name | Description |
|---|---|
filters - CommissionFilterInput
|
Example
Query
query commissions($filters: CommissionFilterInput) {
commissions(filters: $filters) {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
overrides {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
...AgentProfileObjectTypeFragment
}
commission_rule {
...CommissionObjectTypeFragment
}
}
}
}
Variables
{"filters": CommissionFilterInput}
Response
{
"data": {
"commissions": [
{
"id": 4,
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"attribute_type": "ALL",
"commission_value_type": "FLAT",
"sku_id": "abc123",
"min_price": 987.65,
"max_price": 123.45,
"product_commission": 987.65,
"loan_commission": 987.65,
"cash_commission": 987.65,
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sku": SkuObjectType,
"overrides": [CommissionOverrideObjectType]
}
]
}
}
commissionsCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - CommissionFilterInput
|
Example
Query
query commissionsCount($filters: CommissionFilterInput) {
commissionsCount(filters: $filters)
}
Variables
{"filters": CommissionFilterInput}
Response
{"data": {"commissionsCount": 987.65}}
commissionsCursorPaginated
Response
Returns a CursorsPaginatedCommissions!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - CommissionFilterInput
|
|
regexFilters - CommissionFilterInput
|
Example
Query
query commissionsCursorPaginated(
$pagination: CursorPaginationInputType,
$filters: CommissionFilterInput,
$regexFilters: CommissionFilterInput
) {
commissionsCursorPaginated(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
...SkuObjectTypeFragment
}
overrides {
...CommissionOverrideObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": CommissionFilterInput,
"regexFilters": CommissionFilterInput
}
Response
{
"data": {
"commissionsCursorPaginated": {
"data": [CommissionObjectType],
"pagination": CursorPaginationMetadata
}
}
}
commissionsOffsetPaginated
Response
Returns an OffsetPaginatedCommissions!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - CommissionFilterInput
|
|
regexFilters - CommissionFilterInput
|
Example
Query
query commissionsOffsetPaginated(
$pagination: OffsetPaginationInputType,
$filters: CommissionFilterInput,
$regexFilters: CommissionFilterInput
) {
commissionsOffsetPaginated(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
...SkuObjectTypeFragment
}
overrides {
...CommissionOverrideObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": CommissionFilterInput,
"regexFilters": CommissionFilterInput
}
Response
{
"data": {
"commissionsOffsetPaginated": {
"data": [CommissionObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
communication_module
Description
Access communication module queries
Response
Returns a CommunicationModuleNamespace!
Example
Query
query communication_module {
communication_module {
communication {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
communicationsOffset {
data {
...CommunicationObjectTypeFragment
}
metadata {
...OffsetPaginationMetadataFragment
}
}
communicationsCursor {
data {
...CommunicationObjectTypeFragment
}
pagination {
...CursorPaginationMetadataFragment
}
}
createCommunication {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
bulkCreateCommunications {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
updateCommunication {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
retryCommunication
markNotificationAsRead {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
markAllNotificationsAsRead
trackNotificationClick {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
deleteCommunication
deleteManyCommunications
subscribeToTopic
unsubscribeFromTopic
subscribeToDefaultTopics
unsubscribeFromDefaultTopics
}
}
Response
{
"data": {
"communication_module": {
"communication": CommunicationObjectType,
"communicationsOffset": OffsetPaginatedCommunications,
"communicationsCursor": CursorPaginatedCommunications,
"createCommunication": CommunicationObjectType,
"bulkCreateCommunications": [
CommunicationObjectType
],
"updateCommunication": CommunicationObjectType,
"retryCommunication": true,
"markNotificationAsRead": CommunicationObjectType,
"markAllNotificationsAsRead": 987,
"trackNotificationClick": CommunicationObjectType,
"deleteCommunication": true,
"deleteManyCommunications": 987,
"subscribeToTopic": true,
"unsubscribeFromTopic": true,
"subscribeToDefaultTopics": true,
"unsubscribeFromDefaultTopics": true
}
}
}
completedRepairs
Response
Returns [RepairObjectType!]!
Example
Query
query completedRepairs {
completedRepairs {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Response
{
"data": {
"completedRepairs": [
{
"repair_id": "4",
"repair_display_id": "xyz789",
"requires_technician": false,
"inventory_id": "abc123",
"customer_id": "abc123",
"original_sale_id": "abc123",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "xyz789",
"hq_diagnostic_notes": "xyz789",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 987.65,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
condition
Response
Returns a ConditionObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query condition($id: ID!) {
condition(id: $id) {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"condition": {
"condition_id": 4,
"grade": "abc123",
"name": "abc123",
"sort_order": 123,
"color_hex": "abc123",
"badge_icon": "xyz789",
"criteria": {},
"description": "abc123",
"internal_notes": "abc123",
"verification_requirements": {},
"warranty_months": 123,
"price_multiplier": 987.65,
"financing_impact": {},
"seller_requirements": {},
"is_active": false,
"available_for_sellers": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
conditionByGrade
Response
Returns a ConditionObjectType
Arguments
| Name | Description |
|---|---|
grade - String!
|
Example
Query
query conditionByGrade($grade: String!) {
conditionByGrade(grade: $grade) {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
Variables
{"grade": "abc123"}
Response
{
"data": {
"conditionByGrade": {
"condition_id": "4",
"grade": "xyz789",
"name": "xyz789",
"sort_order": 123,
"color_hex": "xyz789",
"badge_icon": "xyz789",
"criteria": {},
"description": "xyz789",
"internal_notes": "xyz789",
"verification_requirements": {},
"warranty_months": 987,
"price_multiplier": 123.45,
"financing_impact": {},
"seller_requirements": {},
"is_active": false,
"available_for_sellers": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
conditions
Response
Returns [ConditionObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - ConditionFilterInput
|
Example
Query
query conditions($filter: ConditionFilterInput) {
conditions(filter: $filter) {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
Variables
{"filter": ConditionFilterInput}
Response
{
"data": {
"conditions": [
{
"condition_id": "4",
"grade": "abc123",
"name": "xyz789",
"sort_order": 123,
"color_hex": "xyz789",
"badge_icon": "xyz789",
"criteria": {},
"description": "abc123",
"internal_notes": "xyz789",
"verification_requirements": {},
"warranty_months": 987,
"price_multiplier": 987.65,
"financing_impact": {},
"seller_requirements": {},
"is_active": true,
"available_for_sellers": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
conditionsWithCursorPagination
Response
Returns a CursorPaginatedConditions!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - ConditionFilterInput
|
|
regexFilters - ConditionFilterInput
|
Example
Query
query conditionsWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: ConditionFilterInput,
$regexFilters: ConditionFilterInput
) {
conditionsWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": ConditionFilterInput,
"regexFilters": ConditionFilterInput
}
Response
{
"data": {
"conditionsWithCursorPagination": {
"data": [ConditionObjectType],
"pagination": CursorPaginationMetadata
}
}
}
conditionsWithOffsetPagination
Response
Returns an OffsetPaginatedConditions!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - ConditionFilterInput
|
|
regexFilters - ConditionFilterInput
|
Example
Query
query conditionsWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: ConditionFilterInput,
$regexFilters: ConditionFilterInput
) {
conditionsWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": ConditionFilterInput,
"regexFilters": ConditionFilterInput
}
Response
{
"data": {
"conditionsWithOffsetPagination": {
"data": [ConditionObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
config_module
Description
Access config module queries
Response
Returns a ConfigModuleNamespace!
Example
Query
query config_module {
config_module {
configs {
byId {
...ConfigTypeFragment
}
byFilters {
...ConfigTypeFragment
}
count
value {
...ConfigValueResponseFragment
}
exists {
...ConfigExistsResponseFragment
}
offsetPaginated {
...ConfigOffsetPaginatedResponseFragment
}
cursorPaginated {
...ConfigCursorPaginatedResponseFragment
}
clientConfigs
byCategory
inventory {
...InventoryUiConfigTypeFragment
}
featureFlags
isFeatureEnabled {
...FeatureStatusResponseFragment
}
withHistory {
...ConfigWithHistoryFragment
}
create {
...ConfigTypeFragment
}
updateById {
...ConfigTypeFragment
}
updateMany
deleteById
deleteMany
bulkCreate {
...BulkConfigMutationResponseFragment
}
delete {
...ConfigDeleteResponseFragment
}
publish {
...ConfigMutationResponseFragment
}
rollback {
...ConfigMutationResponseFragment
}
clearCache {
...CacheClearedFragment
}
}
userRoleConfigs {
value {
...UserRoleConfigValueResponseFragment
}
myConfigs {
...ConfigTypeFragment
}
roleConfigs {
...ConfigTypeFragment
}
setMyConfig {
...ConfigTypeFragment
}
setRoleConfig {
...ConfigTypeFragment
}
deleteMyConfig
deleteRoleConfig
}
sharedResources {
mySharedResources {
...OffsetPaginatedSharedResourcesFragment
}
sharedWithMe {
...OffsetPaginatedSharedResourcesFragment
}
sharedResource {
...SharedResourceObjectTypeFragment
}
sharedResourcesByKey {
...SharedResourceObjectTypeFragment
}
createSharedResource {
...SharedResourceObjectTypeFragment
}
updateSharedResource {
...SharedResourceObjectTypeFragment
}
deleteSharedResource
addUsersToSharedResource {
...SharedResourceObjectTypeFragment
}
}
}
}
Response
{
"data": {
"config_module": {
"configs": ConfigsNamespace,
"userRoleConfigs": UserRoleConfigsNamespace,
"sharedResources": SharedResourcesNamespace
}
}
}
creditApplicationConfig
Description
Returns dropdown options and labels for all credit-related fields
Response
Returns a CreditApplicationConfigType!
Example
Query
query creditApplicationConfig {
creditApplicationConfig {
mpesaStatementValid {
name
options {
...DropdownOptionTypeFragment
}
}
bankStatementValid {
name
options {
...DropdownOptionTypeFragment
}
}
kraPinValid {
name
options {
...DropdownOptionTypeFragment
}
}
customerIdFrontpageValid {
name
options {
...DropdownOptionTypeFragment
}
}
idWithSelfieValid {
name
options {
...DropdownOptionTypeFragment
}
}
altContactIdValid {
name
options {
...DropdownOptionTypeFragment
}
}
altContactPhoneValid {
name
options {
...DropdownOptionTypeFragment
}
}
customerIdBackpageValid {
name
options {
...DropdownOptionTypeFragment
}
}
mpesaStatementRecentAirtime {
name
options {
...DropdownOptionTypeFragment
}
}
mpesaStatementGapsAnalysis {
name
options {
...DropdownOptionTypeFragment
}
}
crdApproval {
name
options {
...DropdownOptionTypeFragment
}
}
previousLoans {
name
options {
...DropdownOptionTypeFragment
}
}
riskFlags {
name
options {
...DropdownOptionTypeFragment
}
}
creditStatus {
name
options {
...DropdownOptionTypeFragment
}
}
pendingKycChecks {
name
options {
...DropdownOptionTypeFragment
}
}
highDepositOverride {
name
options {
...DropdownOptionTypeFragment
}
}
loanDuration {
name
options {
...DropdownOptionTypeFragment
}
}
pricePlanCreditStatus {
name
options {
...DropdownOptionTypeFragment
}
}
approvalCreditStatus {
name
options {
...DropdownOptionTypeFragment
}
}
depositAndDeliveryCreditStatus {
name
options {
...DropdownOptionTypeFragment
}
}
finalRiskScore {
name
options {
...DropdownOptionTypeFragment
}
}
creditCallStatus {
name
options {
...DropdownOptionTypeFragment
}
}
}
}
Response
{
"data": {
"creditApplicationConfig": {
"mpesaStatementValid": CreditConfigFieldType,
"bankStatementValid": CreditConfigFieldType,
"kraPinValid": CreditConfigFieldType,
"customerIdFrontpageValid": CreditConfigFieldType,
"idWithSelfieValid": CreditConfigFieldType,
"altContactIdValid": CreditConfigFieldType,
"altContactPhoneValid": CreditConfigFieldType,
"customerIdBackpageValid": CreditConfigFieldType,
"mpesaStatementRecentAirtime": CreditConfigFieldType,
"mpesaStatementGapsAnalysis": CreditConfigFieldType,
"crdApproval": CreditConfigFieldType,
"previousLoans": CreditConfigFieldType,
"riskFlags": CreditConfigFieldType,
"creditStatus": CreditConfigFieldType,
"pendingKycChecks": CreditConfigFieldType,
"highDepositOverride": CreditConfigFieldType,
"loanDuration": CreditConfigFieldType,
"pricePlanCreditStatus": CreditConfigFieldType,
"approvalCreditStatus": CreditConfigFieldType,
"depositAndDeliveryCreditStatus": CreditConfigFieldType,
"finalRiskScore": CreditConfigFieldType,
"creditCallStatus": CreditConfigFieldType
}
}
}
creditBureauTransaction
Description
Get a single credit bureau transaction by ID
Response
Returns a CreditBureauTransactionDto
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query creditBureauTransaction($id: ID!) {
creditBureauTransaction(id: $id) {
id
_id
provider
customer_id
customer_dob
customer_age
customer_name
recent_loans_crb
open_loans_count
past_default_crb
open_loan_record
written_off_loans
settled_default_loans
closed_default_loans
open_default_loans
is_report_empty
has_no_defaults_and_low_principals
paid_off_loans_in_time_12_months
paid_off_loans_in_time_all
principals_below_5000
phone_numbers
system_defined_score
user_defined_score
score
pdf_id
pdf_url
rawData
metadata
manual_override
record_status
crb_analysis {
scoreExplanation {
...CrbScoreExplanationTypeFragment
}
creditCheckFields {
...CrbCreditCheckFieldsTypeFragment
}
}
createdAt
updatedAt
}
}
Variables
{"id": "4"}
Response
{
"data": {
"creditBureauTransaction": {
"id": 4,
"_id": "4",
"provider": "TRANSUNION",
"customer_id": "xyz789",
"customer_dob": "2007-12-03T10:15:30Z",
"customer_age": 123.45,
"customer_name": "xyz789",
"recent_loans_crb": 123.45,
"open_loans_count": 123.45,
"past_default_crb": 123.45,
"open_loan_record": 123.45,
"written_off_loans": 987.65,
"settled_default_loans": 123.45,
"closed_default_loans": 987.65,
"open_default_loans": 123.45,
"is_report_empty": false,
"has_no_defaults_and_low_principals": false,
"paid_off_loans_in_time_12_months": 123.45,
"paid_off_loans_in_time_all": 987.65,
"principals_below_5000": 123.45,
"phone_numbers": ["abc123"],
"system_defined_score": "xyz789",
"user_defined_score": "xyz789",
"score": "xyz789",
"pdf_id": "xyz789",
"pdf_url": "abc123",
"rawData": {},
"metadata": {},
"manual_override": false,
"record_status": "ACTIVE",
"crb_analysis": CrbAnalysisType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
creditBureauTransactionByFilters
Description
Get a single credit bureau transaction by filters
Response
Returns a CreditBureauTransactionDto
Arguments
| Name | Description |
|---|---|
filters - CreditBureauTransactionFilterInput!
|
Example
Query
query creditBureauTransactionByFilters($filters: CreditBureauTransactionFilterInput!) {
creditBureauTransactionByFilters(filters: $filters) {
id
_id
provider
customer_id
customer_dob
customer_age
customer_name
recent_loans_crb
open_loans_count
past_default_crb
open_loan_record
written_off_loans
settled_default_loans
closed_default_loans
open_default_loans
is_report_empty
has_no_defaults_and_low_principals
paid_off_loans_in_time_12_months
paid_off_loans_in_time_all
principals_below_5000
phone_numbers
system_defined_score
user_defined_score
score
pdf_id
pdf_url
rawData
metadata
manual_override
record_status
crb_analysis {
scoreExplanation {
...CrbScoreExplanationTypeFragment
}
creditCheckFields {
...CrbCreditCheckFieldsTypeFragment
}
}
createdAt
updatedAt
}
}
Variables
{"filters": CreditBureauTransactionFilterInput}
Response
{
"data": {
"creditBureauTransactionByFilters": {
"id": 4,
"_id": 4,
"provider": "TRANSUNION",
"customer_id": "xyz789",
"customer_dob": "2007-12-03T10:15:30Z",
"customer_age": 987.65,
"customer_name": "abc123",
"recent_loans_crb": 987.65,
"open_loans_count": 123.45,
"past_default_crb": 123.45,
"open_loan_record": 987.65,
"written_off_loans": 123.45,
"settled_default_loans": 123.45,
"closed_default_loans": 987.65,
"open_default_loans": 123.45,
"is_report_empty": true,
"has_no_defaults_and_low_principals": false,
"paid_off_loans_in_time_12_months": 987.65,
"paid_off_loans_in_time_all": 987.65,
"principals_below_5000": 123.45,
"phone_numbers": ["xyz789"],
"system_defined_score": "abc123",
"user_defined_score": "xyz789",
"score": "abc123",
"pdf_id": "abc123",
"pdf_url": "xyz789",
"rawData": {},
"metadata": {},
"manual_override": true,
"record_status": "ACTIVE",
"crb_analysis": CrbAnalysisType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
creditBureauTransactionCount
Description
Get count of credit bureau transactions with optional filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - CreditBureauTransactionFilterInput
|
Example
Query
query creditBureauTransactionCount($filters: CreditBureauTransactionFilterInput) {
creditBureauTransactionCount(filters: $filters)
}
Variables
{"filters": CreditBureauTransactionFilterInput}
Response
{"data": {"creditBureauTransactionCount": 987.65}}
creditBureauTransactionsCursor
Description
Get paginated credit bureau transactions using cursor-based pagination
Response
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - CreditBureauTransactionFilterInput
|
|
regexFilters - CreditBureauTransactionFilterInput
|
Example
Query
query creditBureauTransactionsCursor(
$pagination: CursorPaginationInputType,
$filters: CreditBureauTransactionFilterInput,
$regexFilters: CreditBureauTransactionFilterInput
) {
creditBureauTransactionsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
_id
provider
customer_id
customer_dob
customer_age
customer_name
recent_loans_crb
open_loans_count
past_default_crb
open_loan_record
written_off_loans
settled_default_loans
closed_default_loans
open_default_loans
is_report_empty
has_no_defaults_and_low_principals
paid_off_loans_in_time_12_months
paid_off_loans_in_time_all
principals_below_5000
phone_numbers
system_defined_score
user_defined_score
score
pdf_id
pdf_url
rawData
metadata
manual_override
record_status
crb_analysis {
...CrbAnalysisTypeFragment
}
createdAt
updatedAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": CreditBureauTransactionFilterInput,
"regexFilters": CreditBureauTransactionFilterInput
}
Response
{
"data": {
"creditBureauTransactionsCursor": {
"data": [CreditBureauTransactionDto],
"pagination": CursorPaginationMetadata
}
}
}
creditBureauTransactionsOffset
Description
Get paginated credit bureau transactions using offset-based pagination
Response
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - CreditBureauTransactionFilterInput
|
|
regexFilters - CreditBureauTransactionFilterInput
|
Example
Query
query creditBureauTransactionsOffset(
$pagination: OffsetPaginationInputType,
$filters: CreditBureauTransactionFilterInput,
$regexFilters: CreditBureauTransactionFilterInput
) {
creditBureauTransactionsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
_id
provider
customer_id
customer_dob
customer_age
customer_name
recent_loans_crb
open_loans_count
past_default_crb
open_loan_record
written_off_loans
settled_default_loans
closed_default_loans
open_default_loans
is_report_empty
has_no_defaults_and_low_principals
paid_off_loans_in_time_12_months
paid_off_loans_in_time_all
principals_below_5000
phone_numbers
system_defined_score
user_defined_score
score
pdf_id
pdf_url
rawData
metadata
manual_override
record_status
crb_analysis {
...CrbAnalysisTypeFragment
}
createdAt
updatedAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": CreditBureauTransactionFilterInput,
"regexFilters": CreditBureauTransactionFilterInput
}
Response
{
"data": {
"creditBureauTransactionsOffset": {
"data": [CreditBureauTransactionDto],
"metadata": OffsetPaginationMetadata
}
}
}
customer
Response
Returns a RawCustomersDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query customer($id: ID!) {
customer(id: $id) {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
middle_name
gender
date_of_birth
secondary_phone
marital_status
application_id
customer_source
customer_source_id
}
organization_details {
trading_name
organization_type
registration_date
tax_id
industry_sector
number_of_employees
application_id
customer_source
customer_source_id
}
contact_person {
name
title
phone
email
}
kyc_documents {
selfie_url
id_front_url
id_back_url
certificate_of_incorporation_url
tax_certificate_url
business_permit_url
associated_phone_numbers
}
next_of_kin {
first_name
other_name
relationship
id_type
id_number
phone_primary
phone_secondary
primary_on_whatsapp
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
latestApplication {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"customer": {
"customer_id": "4",
"customer_created_at": "2007-12-03T10:15:30Z",
"customer_type": "INDIVIDUAL",
"customer_phone_number": "xyz789",
"official_id_number": "xyz789",
"country": "xyz789",
"county": "xyz789",
"sub_county": "xyz789",
"ward": "xyz789",
"town": "abc123",
"landmark": "abc123",
"customer_email_address": "abc123",
"customer_status": "ACTIVE",
"display_name": "abc123",
"customer_first_name": "abc123",
"customer_surname_name": "xyz789",
"organization_name": "xyz789",
"organization_registration_number": "abc123",
"individual_details": IndividualDetailsDto,
"organization_details": OrganizationDetailsDto,
"contact_person": ContactPersonDto,
"kyc_documents": KycDocumentsDto,
"next_of_kin": NextOfKinDto,
"total_loans_taken": 123.45,
"active_loans_count": 123.45,
"completed_loans_count": 123.45,
"has_defaulted": false,
"current_credit_score": "xyz789",
"metadata": {},
"customer_updated_at": "2007-12-03T10:15:30Z",
"keycloak_id": "abc123",
"referral_code": "abc123",
"applications": [ApplicationEntityGraphQL],
"latestApplication": ApplicationEntityGraphQL
}
}
}
customerByFilters
Response
Returns a RawCustomersDto
Arguments
| Name | Description |
|---|---|
filters - RawCustomersFilterInput!
|
Example
Query
query customerByFilters($filters: RawCustomersFilterInput!) {
customerByFilters(filters: $filters) {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
middle_name
gender
date_of_birth
secondary_phone
marital_status
application_id
customer_source
customer_source_id
}
organization_details {
trading_name
organization_type
registration_date
tax_id
industry_sector
number_of_employees
application_id
customer_source
customer_source_id
}
contact_person {
name
title
phone
email
}
kyc_documents {
selfie_url
id_front_url
id_back_url
certificate_of_incorporation_url
tax_certificate_url
business_permit_url
associated_phone_numbers
}
next_of_kin {
first_name
other_name
relationship
id_type
id_number
phone_primary
phone_secondary
primary_on_whatsapp
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
latestApplication {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
}
}
Variables
{"filters": RawCustomersFilterInput}
Response
{
"data": {
"customerByFilters": {
"customer_id": "4",
"customer_created_at": "2007-12-03T10:15:30Z",
"customer_type": "INDIVIDUAL",
"customer_phone_number": "abc123",
"official_id_number": "xyz789",
"country": "xyz789",
"county": "abc123",
"sub_county": "xyz789",
"ward": "abc123",
"town": "xyz789",
"landmark": "abc123",
"customer_email_address": "xyz789",
"customer_status": "ACTIVE",
"display_name": "xyz789",
"customer_first_name": "xyz789",
"customer_surname_name": "xyz789",
"organization_name": "abc123",
"organization_registration_number": "xyz789",
"individual_details": IndividualDetailsDto,
"organization_details": OrganizationDetailsDto,
"contact_person": ContactPersonDto,
"kyc_documents": KycDocumentsDto,
"next_of_kin": NextOfKinDto,
"total_loans_taken": 987.65,
"active_loans_count": 123.45,
"completed_loans_count": 123.45,
"has_defaulted": true,
"current_credit_score": "xyz789",
"metadata": {},
"customer_updated_at": "2007-12-03T10:15:30Z",
"keycloak_id": "xyz789",
"referral_code": "xyz789",
"applications": [ApplicationEntityGraphQL],
"latestApplication": ApplicationEntityGraphQL
}
}
}
customerCursor
Description
Get paginated customers (cursor)
Response
Returns a CursorPaginatedRawCustomers!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - RawCustomersFilterInput
|
|
regexFilters - RawCustomersFilterInput
|
Example
Query
query customerCursor(
$pagination: CursorPaginationInputType!,
$filters: RawCustomersFilterInput,
$regexFilters: RawCustomersFilterInput
) {
customerCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": RawCustomersFilterInput,
"regexFilters": RawCustomersFilterInput
}
Response
{
"data": {
"customerCursor": {
"data": [RawCustomersDto],
"pagination": CursorPaginationMetadata
}
}
}
customerReferral
Response
Returns a CustomerReferralDto
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query customerReferral($id: ID!) {
customerReferral(id: $id) {
referral_id
referrer_customer_id
referee_customer_id
referee_customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
referral_code_used
referral_status
validation_due_date
validated_at
rewards_processed_at
referee_loan_contract_id
referee_opening_date
payment_adjustment_id
referrer_airtime_transaction_id
referee_airtime_transaction_id
created_by
created_at
updated_by
updated_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"customerReferral": {
"referral_id": 4,
"referrer_customer_id": 4,
"referee_customer_id": 4,
"referee_customer": RawCustomersDto,
"referral_code_used": "abc123",
"referral_status": "INCOMPLETE",
"validation_due_date": "2007-12-03T10:15:30Z",
"validated_at": "2007-12-03T10:15:30Z",
"rewards_processed_at": "2007-12-03T10:15:30Z",
"referee_loan_contract_id": "xyz789",
"referee_opening_date": "2007-12-03T10:15:30Z",
"payment_adjustment_id": "xyz789",
"referrer_airtime_transaction_id": "xyz789",
"referee_airtime_transaction_id": "abc123",
"created_by": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_by": "xyz789",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
customerReferralByReferee
Response
Returns a CustomerReferralDto
Arguments
| Name | Description |
|---|---|
referee_customer_id - ID!
|
Example
Query
query customerReferralByReferee($referee_customer_id: ID!) {
customerReferralByReferee(referee_customer_id: $referee_customer_id) {
referral_id
referrer_customer_id
referee_customer_id
referee_customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
referral_code_used
referral_status
validation_due_date
validated_at
rewards_processed_at
referee_loan_contract_id
referee_opening_date
payment_adjustment_id
referrer_airtime_transaction_id
referee_airtime_transaction_id
created_by
created_at
updated_by
updated_at
}
}
Variables
{"referee_customer_id": "4"}
Response
{
"data": {
"customerReferralByReferee": {
"referral_id": 4,
"referrer_customer_id": "4",
"referee_customer_id": "4",
"referee_customer": RawCustomersDto,
"referral_code_used": "abc123",
"referral_status": "INCOMPLETE",
"validation_due_date": "2007-12-03T10:15:30Z",
"validated_at": "2007-12-03T10:15:30Z",
"rewards_processed_at": "2007-12-03T10:15:30Z",
"referee_loan_contract_id": "abc123",
"referee_opening_date": "2007-12-03T10:15:30Z",
"payment_adjustment_id": "abc123",
"referrer_airtime_transaction_id": "xyz789",
"referee_airtime_transaction_id": "abc123",
"created_by": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_by": "xyz789",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
customerReferralCodeUsage
Response
Returns [CustomerReferralDto!]!
Arguments
| Name | Description |
|---|---|
customer_id - ID!
|
|
status - ReferralStatusEnum
|
Example
Query
query customerReferralCodeUsage(
$customer_id: ID!,
$status: ReferralStatusEnum
) {
customerReferralCodeUsage(
customer_id: $customer_id,
status: $status
) {
referral_id
referrer_customer_id
referee_customer_id
referee_customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
referral_code_used
referral_status
validation_due_date
validated_at
rewards_processed_at
referee_loan_contract_id
referee_opening_date
payment_adjustment_id
referrer_airtime_transaction_id
referee_airtime_transaction_id
created_by
created_at
updated_by
updated_at
}
}
Variables
{"customer_id": "4", "status": "INCOMPLETE"}
Response
{
"data": {
"customerReferralCodeUsage": [
{
"referral_id": "4",
"referrer_customer_id": 4,
"referee_customer_id": 4,
"referee_customer": RawCustomersDto,
"referral_code_used": "xyz789",
"referral_status": "INCOMPLETE",
"validation_due_date": "2007-12-03T10:15:30Z",
"validated_at": "2007-12-03T10:15:30Z",
"rewards_processed_at": "2007-12-03T10:15:30Z",
"referee_loan_contract_id": "abc123",
"referee_opening_date": "2007-12-03T10:15:30Z",
"payment_adjustment_id": "xyz789",
"referrer_airtime_transaction_id": "abc123",
"referee_airtime_transaction_id": "xyz789",
"created_by": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_by": "xyz789",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
customerReferrals
Response
Returns a CursorPaginatedCustomerReferrals!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - CustomerReferralFilterInput
|
Example
Query
query customerReferrals(
$pagination: CursorPaginationInputType!,
$filters: CustomerReferralFilterInput
) {
customerReferrals(
pagination: $pagination,
filters: $filters
) {
data {
referral_id
referrer_customer_id
referee_customer_id
referee_customer {
...RawCustomersDtoFragment
}
referral_code_used
referral_status
validation_due_date
validated_at
rewards_processed_at
referee_loan_contract_id
referee_opening_date
payment_adjustment_id
referrer_airtime_transaction_id
referee_airtime_transaction_id
created_by
created_at
updated_by
updated_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": CustomerReferralFilterInput
}
Response
{
"data": {
"customerReferrals": {
"data": [CustomerReferralDto],
"pagination": CursorPaginationMetadata
}
}
}
customerReferralsByReferrer
Response
Returns [CustomerReferralDto!]!
Arguments
| Name | Description |
|---|---|
referrer_customer_id - ID!
|
|
status - ReferralStatusEnum
|
Example
Query
query customerReferralsByReferrer(
$referrer_customer_id: ID!,
$status: ReferralStatusEnum
) {
customerReferralsByReferrer(
referrer_customer_id: $referrer_customer_id,
status: $status
) {
referral_id
referrer_customer_id
referee_customer_id
referee_customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
referral_code_used
referral_status
validation_due_date
validated_at
rewards_processed_at
referee_loan_contract_id
referee_opening_date
payment_adjustment_id
referrer_airtime_transaction_id
referee_airtime_transaction_id
created_by
created_at
updated_by
updated_at
}
}
Variables
{"referrer_customer_id": 4, "status": "INCOMPLETE"}
Response
{
"data": {
"customerReferralsByReferrer": [
{
"referral_id": "4",
"referrer_customer_id": "4",
"referee_customer_id": 4,
"referee_customer": RawCustomersDto,
"referral_code_used": "xyz789",
"referral_status": "INCOMPLETE",
"validation_due_date": "2007-12-03T10:15:30Z",
"validated_at": "2007-12-03T10:15:30Z",
"rewards_processed_at": "2007-12-03T10:15:30Z",
"referee_loan_contract_id": "abc123",
"referee_opening_date": "2007-12-03T10:15:30Z",
"payment_adjustment_id": "abc123",
"referrer_airtime_transaction_id": "xyz789",
"referee_airtime_transaction_id": "abc123",
"created_by": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_by": "xyz789",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
customerWallet
Response
Returns a RawCustomerWalletsDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query customerWallet($id: ID!) {
customerWallet(id: $id) {
customer_wallet_id
customer_id
customer_wallet_available_balance
customer_wallet_total_payments
customer_wallet_total_adjustments
customer_wallet_total_days_given
customer_wallet_total_points
customer_wallet_total_allocated
customer_wallet_lifetime_credits
customer_wallet_lifetime_debits
customer_wallet_currency
customer_wallet_created_at
customer_wallet_updated_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"customerWallet": {
"customer_wallet_id": "4",
"customer_id": "4",
"customer_wallet_available_balance": 987.65,
"customer_wallet_total_payments": 987.65,
"customer_wallet_total_adjustments": 123.45,
"customer_wallet_total_days_given": 123.45,
"customer_wallet_total_points": 123.45,
"customer_wallet_total_allocated": 123.45,
"customer_wallet_lifetime_credits": 123.45,
"customer_wallet_lifetime_debits": 987.65,
"customer_wallet_currency": "KES",
"customer_wallet_created_at": "2007-12-03T10:15:30Z",
"customer_wallet_updated_at": "2007-12-03T10:15:30Z"
}
}
}
customerWalletByFilters
Response
Returns a RawCustomerWalletsDto
Arguments
| Name | Description |
|---|---|
filters - CustomerWalletsFilterInput!
|
Example
Query
query customerWalletByFilters($filters: CustomerWalletsFilterInput!) {
customerWalletByFilters(filters: $filters) {
customer_wallet_id
customer_id
customer_wallet_available_balance
customer_wallet_total_payments
customer_wallet_total_adjustments
customer_wallet_total_days_given
customer_wallet_total_points
customer_wallet_total_allocated
customer_wallet_lifetime_credits
customer_wallet_lifetime_debits
customer_wallet_currency
customer_wallet_created_at
customer_wallet_updated_at
}
}
Variables
{"filters": CustomerWalletsFilterInput}
Response
{
"data": {
"customerWalletByFilters": {
"customer_wallet_id": 4,
"customer_id": 4,
"customer_wallet_available_balance": 123.45,
"customer_wallet_total_payments": 987.65,
"customer_wallet_total_adjustments": 987.65,
"customer_wallet_total_days_given": 987.65,
"customer_wallet_total_points": 987.65,
"customer_wallet_total_allocated": 987.65,
"customer_wallet_lifetime_credits": 987.65,
"customer_wallet_lifetime_debits": 123.45,
"customer_wallet_currency": "KES",
"customer_wallet_created_at": "2007-12-03T10:15:30Z",
"customer_wallet_updated_at": "2007-12-03T10:15:30Z"
}
}
}
customerWallets
Response
Returns [RawCustomerWalletsDto!]!
Arguments
| Name | Description |
|---|---|
filters - CustomerWalletsFilterInput
|
Example
Query
query customerWallets($filters: CustomerWalletsFilterInput) {
customerWallets(filters: $filters) {
customer_wallet_id
customer_id
customer_wallet_available_balance
customer_wallet_total_payments
customer_wallet_total_adjustments
customer_wallet_total_days_given
customer_wallet_total_points
customer_wallet_total_allocated
customer_wallet_lifetime_credits
customer_wallet_lifetime_debits
customer_wallet_currency
customer_wallet_created_at
customer_wallet_updated_at
}
}
Variables
{"filters": CustomerWalletsFilterInput}
Response
{
"data": {
"customerWallets": [
{
"customer_wallet_id": "4",
"customer_id": "4",
"customer_wallet_available_balance": 123.45,
"customer_wallet_total_payments": 987.65,
"customer_wallet_total_adjustments": 987.65,
"customer_wallet_total_days_given": 987.65,
"customer_wallet_total_points": 987.65,
"customer_wallet_total_allocated": 123.45,
"customer_wallet_lifetime_credits": 987.65,
"customer_wallet_lifetime_debits": 123.45,
"customer_wallet_currency": "KES",
"customer_wallet_created_at": "2007-12-03T10:15:30Z",
"customer_wallet_updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
customerWalletsCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - CustomerWalletsFilterInput
|
Example
Query
query customerWalletsCount($filters: CustomerWalletsFilterInput) {
customerWalletsCount(filters: $filters)
}
Variables
{"filters": CustomerWalletsFilterInput}
Response
{"data": {"customerWalletsCount": 987.65}}
customer_module
Description
Access customer module operations
Response
Returns a CustomerModuleNamespace!
Example
Query
query customer_module {
customer_module {
credit {
queueAnalytics {
...QueueAnalyticsTypeFragment
}
queueWorkload {
...QueueWorkloadResponseTypeFragment
}
queueApplicationsOffset {
...OffsetPaginatedApplicationsFragment
}
queueApplicationsCursor {
...CursorPaginatedApplicationsFragment
}
updateCreditProspectStage {
...ApplicationEntityGraphQLFragment
}
assignCreditAgent {
...ApplicationEntityGraphQLFragment
}
updateCreditApplication {
...ApplicationEntityGraphQLFragment
}
retryOrderCreation {
...ApplicationEntityGraphQLFragment
}
}
subsequentLoan {
createSubsequentLoanApplication {
...ApplicationEntityGraphQLFragment
}
verifySubsequentLoanOtp {
...ApplicationEntityGraphQLFragment
}
checkSubsequentLoanEligibility
}
risk {
riskRecord {
...RawRiskDtoFragment
}
riskRecordByFilters {
...RawRiskDtoFragment
}
riskRecordsCount
riskRecordsCursor {
...CursorPaginatedRawRiskFragment
}
riskRecordsOffset {
...OffsetPaginatedRawRiskFragment
}
riskRecordsByCustomer {
...RawRiskDtoFragment
}
isBlocked {
...RawRiskDtoFragment
}
createRiskRecord {
...RawRiskDtoFragment
}
updateRiskRecord {
...RawRiskDtoFragment
}
updateManyRiskRecords
deleteRiskRecord
deleteManyRiskRecords
deactivateRiskRecord {
...RawRiskDtoFragment
}
combinedRiskFlagForCustomer {
...CombinedRiskFlagResultTypeFragment
}
combinedRiskFlagForApplication {
...CombinedRiskFlagResultTypeFragment
}
exemptionEligibility {
...ExemptionEligibilityTypeFragment
}
processExemption {
...ApplicationEntityGraphQLFragment
}
calculateCustomerRisk
calculateApplicationRisk
}
applications {
resubmissionEligibility {
...ResubmissionJourneyGraphQLFragment
}
resubmissionForm {
...ResubmissionFormSchemaGraphQLFragment
}
resubmissionOverview {
...ResubmissionOverviewTypeFragment
}
resubmission {
...ApplicationResubmissionGraphQLFragment
}
submitResubmission {
...ApplicationResubmissionGraphQLFragment
}
updateResubmission {
...ApplicationResubmissionGraphQLFragment
}
commitResubmission {
...ApplicationResubmissionGraphQLFragment
}
transferProspectForResubmission
}
onboardingChecks {
runFullValidationCheck {
...OnboardingCheckResponseFragment
}
runIprsCheck {
...OnboardingCheckResponseFragment
}
runMpesaCheck {
...OnboardingCheckResponseFragment
}
runDuplicateCheck {
...OnboardingCheckResponseFragment
}
runCrbCheck {
...OnboardingCheckResponseFragment
}
runKraCheck {
...OnboardingCheckResponseFragment
}
runFateGuideCheck {
...OnboardingCheckResponseFragment
}
runRiskCheck {
...OnboardingCheckResponseFragment
}
runPrescreeningCheck {
...OnboardingCheckResponseFragment
}
runPrescreenFlow {
...OnboardingCheckResponseFragment
}
runNokCheckFlow {
...OnboardingCheckResponseFragment
}
runResubmissionIprsCheck {
...OnboardingCheckResponseFragment
}
runResubmissionMpesaCheck {
...OnboardingCheckResponseFragment
}
runResubmissionNokMpesaCheck {
...OnboardingCheckResponseFragment
}
runResubmissionKraCheck {
...OnboardingCheckResponseFragment
}
runResubmissionRiskCheck {
...OnboardingCheckResponseFragment
}
resendDuplicateOtp {
...ApplicationEntityGraphQLFragment
}
verifyDuplicateOtp {
...ApplicationEntityGraphQLFragment
}
previewDuplicateCheck {
...DuplicatePreviewCheckResultFragment
}
}
onboardingSupport {
rerunRoundRobin {
...RoundRobinRerunResultTypeFragment
}
}
selfUnlockDevice {
success
customer_id
total_contracts
eligible_contracts
queued_unlocks
skipped_contracts
results {
...CustomerSelfUnlockContractResultTypeFragment
}
}
gracePeriodEligibility {
eligible
reason
contractId
loanId
category
maxAvailableDays
selectableOptions
currentGracePeriodExpiry
isActiveGracePeriod
}
requestGracePeriod {
success
contractId
loanId
category
graceDays
gracePeriodCreditExpiry
wasExtended
}
grantGracePeriodOverride {
success
contractId
loanId
category
graceDays
gracePeriodCreditExpiry
wasExtended
}
revokeGracePeriod {
success
contractId
loanId
revoked
deviceAction
}
}
}
Response
{
"data": {
"customer_module": {
"credit": CreditNamespace,
"subsequentLoan": SubsequentLoanNamespace,
"risk": RiskNamespace,
"applications": ApplicationsNamespace,
"onboardingChecks": OnboardingChecksNamespace,
"onboardingSupport": OnboardingSupportNamespace,
"selfUnlockDevice": CustomerSelfUnlockResultType,
"gracePeriodEligibility": GracePeriodEligibilityResultType,
"requestGracePeriod": GracePeriodAwardResultType,
"grantGracePeriodOverride": GracePeriodAwardResultType,
"revokeGracePeriod": GracePeriodRevocationResultType
}
}
}
customersByPhone
Response
Returns [RawCustomersDto!]!
Arguments
| Name | Description |
|---|---|
phoneNumber - String!
|
Example
Query
query customersByPhone($phoneNumber: String!) {
customersByPhone(phoneNumber: $phoneNumber) {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
middle_name
gender
date_of_birth
secondary_phone
marital_status
application_id
customer_source
customer_source_id
}
organization_details {
trading_name
organization_type
registration_date
tax_id
industry_sector
number_of_employees
application_id
customer_source
customer_source_id
}
contact_person {
name
title
phone
email
}
kyc_documents {
selfie_url
id_front_url
id_back_url
certificate_of_incorporation_url
tax_certificate_url
business_permit_url
associated_phone_numbers
}
next_of_kin {
first_name
other_name
relationship
id_type
id_number
phone_primary
phone_secondary
primary_on_whatsapp
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
latestApplication {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
}
}
Variables
{"phoneNumber": "xyz789"}
Response
{
"data": {
"customersByPhone": [
{
"customer_id": "4",
"customer_created_at": "2007-12-03T10:15:30Z",
"customer_type": "INDIVIDUAL",
"customer_phone_number": "abc123",
"official_id_number": "abc123",
"country": "xyz789",
"county": "xyz789",
"sub_county": "abc123",
"ward": "abc123",
"town": "xyz789",
"landmark": "xyz789",
"customer_email_address": "xyz789",
"customer_status": "ACTIVE",
"display_name": "xyz789",
"customer_first_name": "abc123",
"customer_surname_name": "xyz789",
"organization_name": "xyz789",
"organization_registration_number": "abc123",
"individual_details": IndividualDetailsDto,
"organization_details": OrganizationDetailsDto,
"contact_person": ContactPersonDto,
"kyc_documents": KycDocumentsDto,
"next_of_kin": NextOfKinDto,
"total_loans_taken": 987.65,
"active_loans_count": 987.65,
"completed_loans_count": 987.65,
"has_defaulted": true,
"current_credit_score": "xyz789",
"metadata": {},
"customer_updated_at": "2007-12-03T10:15:30Z",
"keycloak_id": "abc123",
"referral_code": "abc123",
"applications": [ApplicationEntityGraphQL],
"latestApplication": ApplicationEntityGraphQL
}
]
}
}
customersCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - RawCustomersFilterInput
|
Example
Query
query customersCount($filters: RawCustomersFilterInput) {
customersCount(filters: $filters)
}
Variables
{"filters": RawCustomersFilterInput}
Response
{"data": {"customersCount": 987.65}}
deliveries
Response
Returns [DeliveryObjectType!]
Arguments
| Name | Description |
|---|---|
filters - DeliveryFilterInput
|
Example
Query
query deliveries($filters: DeliveryFilterInput) {
deliveries(filters: $filters) {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
street
city
state
postal_code
country
geo {
...GeoLocationFragment
}
}
tracking_number
provider_info {
provider_name
external_id
tracking_url
}
proof_of_delivery {
images
signature
otp
submitted_otp
otp_expiry_time
match
payment_reference
failed_delivery_reason
}
delivery_notes
destination_location {
lat
lng
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
calls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
latestAnsweredCall {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
created_at
updated_at
deliveryItems {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
}
}
Variables
{"filters": DeliveryFilterInput}
Response
{
"data": {
"deliveries": [
{
"delivery_id": 4,
"order_id": 4,
"seller_id": 4,
"assigned_rider_id": "4",
"delivery_status": "PENDING",
"delivery_address": DeliveryAddress,
"tracking_number": "xyz789",
"provider_info": ProviderInfo,
"proof_of_delivery": ProofOfDelivery,
"delivery_notes": "abc123",
"destination_location": GeoLocation,
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"metadata": {},
"assigned_rider": UserObjectType,
"seller": SellerObjectType,
"order": OrderObjectType,
"items": [DeliveryItemObjectType],
"calls": [DeliveryCallObjectType],
"latestAnsweredCall": DeliveryCallObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"deliveryItems": [DeliveryItemObjectType]
}
]
}
}
deliveriesCursor
Response
Returns a CursorPaginatedDeliveries
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - DeliveryFilterInput
|
|
regexFilters - DeliveryFilterInput
|
Example
Query
query deliveriesCursor(
$pagination: CursorPaginationInputType,
$filters: DeliveryFilterInput,
$regexFilters: DeliveryFilterInput
) {
deliveriesCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": DeliveryFilterInput,
"regexFilters": DeliveryFilterInput
}
Response
{
"data": {
"deliveriesCursor": {
"data": [DeliveryObjectType],
"pagination": CursorPaginationMetadata
}
}
}
deliveriesOffset
Response
Returns an OffsetPaginatedDeliveries!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - DeliveryFilterInput
|
|
regexFilters - DeliveryFilterInput
|
Example
Query
query deliveriesOffset(
$pagination: OffsetPaginationInputType,
$filters: DeliveryFilterInput,
$regexFilters: DeliveryFilterInput
) {
deliveriesOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": DeliveryFilterInput,
"regexFilters": DeliveryFilterInput
}
Response
{
"data": {
"deliveriesOffset": {
"data": [DeliveryObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
delivery
Response
Returns a DeliveryObjectType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query delivery($id: ID!) {
delivery(id: $id) {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
street
city
state
postal_code
country
geo {
...GeoLocationFragment
}
}
tracking_number
provider_info {
provider_name
external_id
tracking_url
}
proof_of_delivery {
images
signature
otp
submitted_otp
otp_expiry_time
match
payment_reference
failed_delivery_reason
}
delivery_notes
destination_location {
lat
lng
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
calls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
latestAnsweredCall {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
created_at
updated_at
deliveryItems {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"delivery": {
"delivery_id": 4,
"order_id": "4",
"seller_id": "4",
"assigned_rider_id": 4,
"delivery_status": "PENDING",
"delivery_address": DeliveryAddress,
"tracking_number": "xyz789",
"provider_info": ProviderInfo,
"proof_of_delivery": ProofOfDelivery,
"delivery_notes": "xyz789",
"destination_location": GeoLocation,
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"metadata": {},
"assigned_rider": UserObjectType,
"seller": SellerObjectType,
"order": OrderObjectType,
"items": [DeliveryItemObjectType],
"calls": [DeliveryCallObjectType],
"latestAnsweredCall": DeliveryCallObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"deliveryItems": [DeliveryItemObjectType]
}
}
}
deliveryByFilters
Response
Returns a DeliveryObjectType
Arguments
| Name | Description |
|---|---|
filters - DeliveryFilterInput!
|
Example
Query
query deliveryByFilters($filters: DeliveryFilterInput!) {
deliveryByFilters(filters: $filters) {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
street
city
state
postal_code
country
geo {
...GeoLocationFragment
}
}
tracking_number
provider_info {
provider_name
external_id
tracking_url
}
proof_of_delivery {
images
signature
otp
submitted_otp
otp_expiry_time
match
payment_reference
failed_delivery_reason
}
delivery_notes
destination_location {
lat
lng
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
calls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
latestAnsweredCall {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
created_at
updated_at
deliveryItems {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
}
}
Variables
{"filters": DeliveryFilterInput}
Response
{
"data": {
"deliveryByFilters": {
"delivery_id": "4",
"order_id": "4",
"seller_id": "4",
"assigned_rider_id": "4",
"delivery_status": "PENDING",
"delivery_address": DeliveryAddress,
"tracking_number": "abc123",
"provider_info": ProviderInfo,
"proof_of_delivery": ProofOfDelivery,
"delivery_notes": "xyz789",
"destination_location": GeoLocation,
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"metadata": {},
"assigned_rider": UserObjectType,
"seller": SellerObjectType,
"order": OrderObjectType,
"items": [DeliveryItemObjectType],
"calls": [DeliveryCallObjectType],
"latestAnsweredCall": DeliveryCallObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"deliveryItems": [DeliveryItemObjectType]
}
}
}
deliveryCall
Response
Returns a DeliveryCallObjectType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query deliveryCall($id: ID!) {
deliveryCall(id: $id) {
call_id
order_id
called_by
caller {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
confirmed_delivery_location {
street
city
state
postal_code
country
geo {
...DeliveryCallGeoFragment
}
}
spec_preference {
colour
sim_card_preference
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"deliveryCall": {
"call_id": 4,
"order_id": "4",
"called_by": "4",
"caller": UserObjectType,
"confirmed_delivery_location": ConfirmedDeliveryLocationObjectType,
"spec_preference": SpecPreferenceObjectType,
"confirmed_delivery_date": "xyz789",
"confirmed_delivery_slot": "MORNING",
"call_time": "2007-12-03T10:15:30Z",
"outcome": "CALL_BACK",
"confirmed_delivery_type": "DELIVERY",
"confirmed_delivery_type_name": "MO",
"notes": "xyz789",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"order": OrderObjectType
}
}
}
deliveryCalls
Response
Returns [DeliveryCallObjectType!]
Arguments
| Name | Description |
|---|---|
filters - DeliveryCallFilterInput
|
Example
Query
query deliveryCalls($filters: DeliveryCallFilterInput) {
deliveryCalls(filters: $filters) {
call_id
order_id
called_by
caller {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
confirmed_delivery_location {
street
city
state
postal_code
country
geo {
...DeliveryCallGeoFragment
}
}
spec_preference {
colour
sim_card_preference
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
}
}
Variables
{"filters": DeliveryCallFilterInput}
Response
{
"data": {
"deliveryCalls": [
{
"call_id": 4,
"order_id": 4,
"called_by": "4",
"caller": UserObjectType,
"confirmed_delivery_location": ConfirmedDeliveryLocationObjectType,
"spec_preference": SpecPreferenceObjectType,
"confirmed_delivery_date": "abc123",
"confirmed_delivery_slot": "MORNING",
"call_time": "2007-12-03T10:15:30Z",
"outcome": "CALL_BACK",
"confirmed_delivery_type": "DELIVERY",
"confirmed_delivery_type_name": "MO",
"notes": "xyz789",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"order": OrderObjectType
}
]
}
}
deliveryCallsCursor
Response
Returns a CursorPaginatedDeliveryCalls
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - DeliveryCallFilterInput
|
|
regexFilters - DeliveryCallFilterInput
|
Example
Query
query deliveryCallsCursor(
$pagination: CursorPaginationInputType,
$filters: DeliveryCallFilterInput,
$regexFilters: DeliveryCallFilterInput
) {
deliveryCallsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": DeliveryCallFilterInput,
"regexFilters": DeliveryCallFilterInput
}
Response
{
"data": {
"deliveryCallsCursor": {
"data": [DeliveryCallObjectType],
"pagination": CursorPaginationMetadata
}
}
}
deliveryCallsOffset
Response
Returns an OffsetPaginatedDeliveryCalls!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - DeliveryCallFilterInput
|
|
regexFilters - DeliveryCallFilterInput
|
Example
Query
query deliveryCallsOffset(
$pagination: OffsetPaginationInputType,
$filters: DeliveryCallFilterInput,
$regexFilters: DeliveryCallFilterInput
) {
deliveryCallsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": DeliveryCallFilterInput,
"regexFilters": DeliveryCallFilterInput
}
Response
{
"data": {
"deliveryCallsOffset": {
"data": [DeliveryCallObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
deliveryItem
Response
Returns a DeliveryItemObjectType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query deliveryItem($id: ID!) {
deliveryItem(id: $id) {
id
delivery_id
order_item_id
quantity_shipped
delivery {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
order_item {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"deliveryItem": {
"id": 4,
"delivery_id": "4",
"order_item_id": "4",
"quantity_shipped": 987.65,
"delivery": DeliveryObjectType,
"order_item": OrderItemObjectType
}
}
}
deliveryItemByFilters
Response
Returns a DeliveryItemObjectType
Arguments
| Name | Description |
|---|---|
filters - DeliveryItemFilterInput!
|
Example
Query
query deliveryItemByFilters($filters: DeliveryItemFilterInput!) {
deliveryItemByFilters(filters: $filters) {
id
delivery_id
order_item_id
quantity_shipped
delivery {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
order_item {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
}
}
Variables
{"filters": DeliveryItemFilterInput}
Response
{
"data": {
"deliveryItemByFilters": {
"id": "4",
"delivery_id": "4",
"order_item_id": 4,
"quantity_shipped": 987.65,
"delivery": DeliveryObjectType,
"order_item": OrderItemObjectType
}
}
}
deliveryItems
Response
Returns [DeliveryItemObjectType!]
Arguments
| Name | Description |
|---|---|
filters - DeliveryItemFilterInput
|
Example
Query
query deliveryItems($filters: DeliveryItemFilterInput) {
deliveryItems(filters: $filters) {
id
delivery_id
order_item_id
quantity_shipped
delivery {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
order_item {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
}
}
Variables
{"filters": DeliveryItemFilterInput}
Response
{
"data": {
"deliveryItems": [
{
"id": 4,
"delivery_id": "4",
"order_item_id": "4",
"quantity_shipped": 987.65,
"delivery": DeliveryObjectType,
"order_item": OrderItemObjectType
}
]
}
}
deliveryItemsCursor
Response
Returns a CursorPaginatedDeliveryItems
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - DeliveryItemFilterInput
|
|
regexFilters - DeliveryItemFilterInput
|
Example
Query
query deliveryItemsCursor(
$pagination: CursorPaginationInputType!,
$filters: DeliveryItemFilterInput,
$regexFilters: DeliveryItemFilterInput
) {
deliveryItemsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": DeliveryItemFilterInput,
"regexFilters": DeliveryItemFilterInput
}
Response
{
"data": {
"deliveryItemsCursor": {
"data": [DeliveryItemObjectType],
"pagination": CursorPaginationMetadata
}
}
}
deliveryItemsOffset
Response
Returns an OffsetPaginatedDeliveryItems!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - DeliveryItemFilterInput
|
|
regexFilters - DeliveryItemFilterInput
|
Example
Query
query deliveryItemsOffset(
$pagination: OffsetPaginationInputType,
$filters: DeliveryItemFilterInput,
$regexFilters: DeliveryItemFilterInput
) {
deliveryItemsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": DeliveryItemFilterInput,
"regexFilters": DeliveryItemFilterInput
}
Response
{
"data": {
"deliveryItemsOffset": {
"data": [DeliveryItemObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
deviceLock
Response
Returns a MdmLockLogsNamespace!
Example
Query
query deviceLock {
deviceLock {
_description
command {
command_id
device_id
device_imei
command_type
command_status
command_trigger
mdm_provider
initiated_by
mdm_reference_id
error_message
attempt_count
command_payload
mdm_response
command_queued_at
command_sent_at
command_delivered_at
command_completed_at
command_created_at
command_updated_at
}
commandHistory {
command_id
device_id
device_imei
command_type
command_status
command_trigger
mdm_provider
initiated_by
mdm_reference_id
error_message
attempt_count
command_payload
mdm_response
command_queued_at
command_sent_at
command_delivered_at
command_completed_at
command_created_at
command_updated_at
}
latestCommand {
command_id
device_id
device_imei
command_type
command_status
command_trigger
mdm_provider
initiated_by
mdm_reference_id
error_message
attempt_count
command_payload
mdm_response
command_queued_at
command_sent_at
command_delivered_at
command_completed_at
command_created_at
command_updated_at
}
}
}
Response
{
"data": {
"deviceLock": {
"_description": "abc123",
"command": DeviceLockCommandType,
"commandHistory": [DeviceLockCommandType],
"latestCommand": DeviceLockCommandType
}
}
}
devices
Response
Returns a MdmNamespace!
Example
Query
query devices {
devices {
_description
lockDevice {
success
message
command {
...DeviceLockCommandTypeFragment
}
}
unlockDevice {
success
message
command {
...DeviceLockCommandTypeFragment
}
}
bulkUnlockDevices {
totalRequested
totalResolved
totalSucceeded
totalFailed
results {
...BulkUnlockDeviceResultTypeFragment
}
platformSummaries {
...PlatformUnlockSummaryTypeFragment
}
}
bulkLockDevices {
totalRequested
totalResolved
totalSucceeded
totalFailed
results {
...BulkUnlockDeviceResultTypeFragment
}
platformSummaries {
...PlatformUnlockSummaryTypeFragment
}
}
deviceStatus {
success
id
mdmProvider
isLocked
isEnrolled
isOnline
isScreenLocked
isCharging
isLost
imei
imei2
serialNumber
model
manufacturer
osVersion
phoneNumber
phoneNumber2
networkOperator
networkOperator2
batteryLevel
lastSeenAt
enrollmentDate
enrollmentStatus
nextLockDate
unlockCode
deviceGroupId
deviceGroupName
storageTotal
storageAvailable
location {
...DeviceLocationResultTypeFragment
}
simLockInfo {
...SimLockInfoTypeFragment
}
rawStatus
}
activityLogs {
logs {
...MdmActivityLogEntryTypeFragment
}
total_count
}
}
}
Response
{
"data": {
"devices": {
"_description": "xyz789",
"lockDevice": DeviceCommandResultType,
"unlockDevice": DeviceCommandResultType,
"bulkUnlockDevices": BulkUnlockResultType,
"bulkLockDevices": BulkUnlockResultType,
"deviceStatus": DeviceStatusResultType,
"activityLogs": MdmActivityLogsResultType
}
}
}
earlyPayoffCalculation
Response
Returns an EarlyPayoffCalculationType!
Example
Query
query earlyPayoffCalculation(
$planId: String!,
$cashPrice: Float!,
$discountMonth: Int!
) {
earlyPayoffCalculation(
planId: $planId,
cashPrice: $cashPrice,
discountMonth: $discountMonth
) {
total_loan_amount
deposit_amount
outstanding_loan
discount_percent
discount_amount
outstanding_discount_applied
total_customer_pays
accurate_total_customer_pays
monthly_instalment_amount
weekly_instalment_amount
daily_instalment_amount
duration_months
payment_frequency
total_loan_amount_high
discount_amount_high
total_customer_pays_high
outstanding_loan_high
monthly_instalment_amount_high
weekly_instalment_amount_high
daily_instalment_amount_high
}
}
Variables
{
"planId": "xyz789",
"cashPrice": 123.45,
"discountMonth": 987
}
Response
{
"data": {
"earlyPayoffCalculation": {
"total_loan_amount": 987.65,
"deposit_amount": 123.45,
"outstanding_loan": 123.45,
"discount_percent": 123.45,
"discount_amount": 123.45,
"outstanding_discount_applied": 987.65,
"total_customer_pays": 123.45,
"accurate_total_customer_pays": 123.45,
"monthly_instalment_amount": 987.65,
"weekly_instalment_amount": 123.45,
"daily_instalment_amount": 987.65,
"duration_months": 123,
"payment_frequency": "xyz789",
"total_loan_amount_high": 123.45,
"discount_amount_high": 123.45,
"total_customer_pays_high": 123.45,
"outstanding_loan_high": 987.65,
"monthly_instalment_amount_high": 123.45,
"weekly_instalment_amount_high": 123.45,
"daily_instalment_amount_high": 987.65
}
}
}
eligiblePricePlans
Response
Returns [PricePlanObjectType!]!
Example
Query
query eligiblePricePlans(
$deviceValue: Float!,
$sellerTierId: String,
$includePrivate: Boolean
) {
eligiblePricePlans(
deviceValue: $deviceValue,
sellerTierId: $sellerTierId,
includePrivate: $includePrivate
) {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
within_months
discount_percent
}
status
is_private
version
metadata
created_at
updated_at
tier {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
versions {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{
"deviceValue": 987.65,
"sellerTierId": "xyz789",
"includePrivate": false
}
Response
{
"data": {
"eligiblePricePlans": [
{
"id": 4,
"tier_id": "abc123",
"parent_plan_id": "xyz789",
"code": "abc123",
"name": "xyz789",
"min_device_value": 987.65,
"max_device_value": 987.65,
"deposit_percent": 123.45,
"deposit_percent_high": 987.65,
"subsequent_loan_discount_percent": 123.45,
"loan_multiplier": 123.45,
"loan_multiplier_high": 987.65,
"mocare_percent": 123.45,
"duration_months": 987,
"duration_months_high": 987,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": true,
"version": 987,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
]
}
}
export_module
Description
Access data export module operations
Response
Returns an ExportModuleNamespace!
Example
Query
query export_module {
export_module {
dataExport {
scheduleDataExport {
...DataExportTypeFragment
}
estimateRowCount
exportColumnCatalog {
...ExportDomainColumnCatalogTypeFragment
}
dataExport {
...DataExportTypeFragment
}
dataExports {
...DataExportTypeFragment
}
}
}
}
Response
{
"data": {
"export_module": {"dataExport": DataExportNamespace}
}
}
fateGuideScores
Description
Get a single fate guide score by ID
Response
Returns a FateGuideScoresDto
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query fateGuideScores($id: ID!) {
fateGuideScores(id: $id) {
id
_id
application_id
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
customer_id
crb_transaction_id
mobile_analysis_id
document_id
crb_score
crb_past_default_record
customer_age
big_loan_default
model_type
fate_guide_message
requires_recheck
sale_agent_id
available_plans
version
sku
type
active
devicePrice
durationMonths
age
loanHistory {
status
accountStatus
principal_amount
originalAmount
instalment_amount
scheduledPaymentAmount
term_months
repaymentPeriod
}
signals {
slopeBucket
spinAffordability
slopePctPerMonth
bettingRatio
p2pShare
cov
age
}
tier
status
rejectionReason
statementLength
minimumRequired
sdiPct
maxMonthlyInstallment
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
productBand
canonicalProductBand
depositLevel
affordabilitySource
affordabilityValue
adjustedAffordability
crbInferredAffordability
recommendation
slopeBucket
slopeHaircutPct
bettingRatio
p2pShare
crbPositiveScore
cov
productBands
deviceAssessment
customerName
assessedAt
modelVersion
formulas {
grossInflows
inorganicBanks
inorganicMfis
inorganicMobileLenders
inorganicBetting
inorganicInsurance
inorganicTotal
inorganicPct
netInflows
essentials
loanRepayments
frequentP2pSent
frequentP2pTxnsPm
nondiscretionary
nondiscretionaryPct
disposableIncome
disposableIncomeMonthly
monthlyDataPoints
covBucket
dirPct
p2pReceivedTotal
top10P2pTotal
top10P2pShare
p2pHaircutPct
loanExposure
fulizaPerMonth
fulizaOvercountFlag
financialHaircutPct
bettingSent
bettingPerMonth
bettingFreqFlag
bettingHaircutPct
totalRafPct
maxInstallmentPreRaf
maxInstallment
rejected
negativeDisposableFlag
}
explanation {
recommendation
reason
affordabilitySource
spinAffordability
crbInferredAffordability
adjustedAffordability
sdiPct
tier
tierThresholds
slopeBucket
haircutPct
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
keyFormulas
rafMonitoring {
...FateGuideExplainerRafMonitoringDtoFragment
}
}
createdAt
updatedAt
}
}
Variables
{"id": 4}
Response
{
"data": {
"fateGuideScores": {
"id": "4",
"_id": 4,
"application_id": "4",
"application": ApplicationEntityGraphQL,
"customer_id": "abc123",
"crb_transaction_id": 4,
"mobile_analysis_id": "xyz789",
"document_id": "4",
"crb_score": "xyz789",
"crb_past_default_record": 123.45,
"customer_age": 123,
"big_loan_default": "xyz789",
"model_type": "abc123",
"fate_guide_message": "xyz789",
"requires_recheck": false,
"sale_agent_id": "xyz789",
"available_plans": ["xyz789"],
"version": 987,
"sku": "xyz789",
"type": "abc123",
"active": true,
"devicePrice": 123.45,
"durationMonths": 123,
"age": 123.45,
"loanHistory": [FateGuideRuntimeLoanRecordDto],
"signals": FateGuideRuntimeSignalsDto,
"tier": "abc123",
"status": "xyz789",
"rejectionReason": "abc123",
"statementLength": 123.45,
"minimumRequired": 987.65,
"sdiPct": 987.65,
"maxMonthlyInstallment": 123.45,
"maxCashPrice": 987.65,
"maxCashPriceHigh": 123.45,
"maxCashPriceMosaver": 123.45,
"productBand": "abc123",
"canonicalProductBand": "xyz789",
"depositLevel": "xyz789",
"affordabilitySource": "abc123",
"affordabilityValue": 987.65,
"adjustedAffordability": 987.65,
"crbInferredAffordability": 987.65,
"recommendation": "abc123",
"slopeBucket": "abc123",
"slopeHaircutPct": 987.65,
"bettingRatio": 987.65,
"p2pShare": 123.45,
"crbPositiveScore": 123.45,
"cov": 987.65,
"productBands": {},
"deviceAssessment": {},
"customerName": "xyz789",
"assessedAt": "xyz789",
"modelVersion": "xyz789",
"formulas": FateGuideRuntimeFormulasDto,
"explanation": FateGuideRuntimeExplanationDto,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
fateGuideScoresByApplicationId
Description
Get fate guide scores for an application
Response
Returns [FateGuideScoresDto!]!
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
query fateGuideScoresByApplicationId($applicationId: ID!) {
fateGuideScoresByApplicationId(applicationId: $applicationId) {
id
_id
application_id
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
customer_id
crb_transaction_id
mobile_analysis_id
document_id
crb_score
crb_past_default_record
customer_age
big_loan_default
model_type
fate_guide_message
requires_recheck
sale_agent_id
available_plans
version
sku
type
active
devicePrice
durationMonths
age
loanHistory {
status
accountStatus
principal_amount
originalAmount
instalment_amount
scheduledPaymentAmount
term_months
repaymentPeriod
}
signals {
slopeBucket
spinAffordability
slopePctPerMonth
bettingRatio
p2pShare
cov
age
}
tier
status
rejectionReason
statementLength
minimumRequired
sdiPct
maxMonthlyInstallment
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
productBand
canonicalProductBand
depositLevel
affordabilitySource
affordabilityValue
adjustedAffordability
crbInferredAffordability
recommendation
slopeBucket
slopeHaircutPct
bettingRatio
p2pShare
crbPositiveScore
cov
productBands
deviceAssessment
customerName
assessedAt
modelVersion
formulas {
grossInflows
inorganicBanks
inorganicMfis
inorganicMobileLenders
inorganicBetting
inorganicInsurance
inorganicTotal
inorganicPct
netInflows
essentials
loanRepayments
frequentP2pSent
frequentP2pTxnsPm
nondiscretionary
nondiscretionaryPct
disposableIncome
disposableIncomeMonthly
monthlyDataPoints
covBucket
dirPct
p2pReceivedTotal
top10P2pTotal
top10P2pShare
p2pHaircutPct
loanExposure
fulizaPerMonth
fulizaOvercountFlag
financialHaircutPct
bettingSent
bettingPerMonth
bettingFreqFlag
bettingHaircutPct
totalRafPct
maxInstallmentPreRaf
maxInstallment
rejected
negativeDisposableFlag
}
explanation {
recommendation
reason
affordabilitySource
spinAffordability
crbInferredAffordability
adjustedAffordability
sdiPct
tier
tierThresholds
slopeBucket
haircutPct
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
keyFormulas
rafMonitoring {
...FateGuideExplainerRafMonitoringDtoFragment
}
}
createdAt
updatedAt
}
}
Variables
{"applicationId": "4"}
Response
{
"data": {
"fateGuideScoresByApplicationId": [
{
"id": "4",
"_id": "4",
"application_id": "4",
"application": ApplicationEntityGraphQL,
"customer_id": "abc123",
"crb_transaction_id": 4,
"mobile_analysis_id": "abc123",
"document_id": 4,
"crb_score": "xyz789",
"crb_past_default_record": 123.45,
"customer_age": 123,
"big_loan_default": "abc123",
"model_type": "abc123",
"fate_guide_message": "abc123",
"requires_recheck": false,
"sale_agent_id": "abc123",
"available_plans": ["abc123"],
"version": 987,
"sku": "abc123",
"type": "abc123",
"active": true,
"devicePrice": 987.65,
"durationMonths": 987,
"age": 987.65,
"loanHistory": [FateGuideRuntimeLoanRecordDto],
"signals": FateGuideRuntimeSignalsDto,
"tier": "abc123",
"status": "abc123",
"rejectionReason": "xyz789",
"statementLength": 987.65,
"minimumRequired": 123.45,
"sdiPct": 987.65,
"maxMonthlyInstallment": 987.65,
"maxCashPrice": 987.65,
"maxCashPriceHigh": 987.65,
"maxCashPriceMosaver": 987.65,
"productBand": "xyz789",
"canonicalProductBand": "xyz789",
"depositLevel": "abc123",
"affordabilitySource": "abc123",
"affordabilityValue": 987.65,
"adjustedAffordability": 987.65,
"crbInferredAffordability": 987.65,
"recommendation": "abc123",
"slopeBucket": "abc123",
"slopeHaircutPct": 987.65,
"bettingRatio": 987.65,
"p2pShare": 987.65,
"crbPositiveScore": 123.45,
"cov": 987.65,
"productBands": {},
"deviceAssessment": {},
"customerName": "xyz789",
"assessedAt": "xyz789",
"modelVersion": "abc123",
"formulas": FateGuideRuntimeFormulasDto,
"explanation": FateGuideRuntimeExplanationDto,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
]
}
}
fateGuideScoresByFilters
Description
Get a single fate guide score by filters
Response
Returns a FateGuideScoresDto
Arguments
| Name | Description |
|---|---|
filters - FateGuideScoresFilterInput!
|
Example
Query
query fateGuideScoresByFilters($filters: FateGuideScoresFilterInput!) {
fateGuideScoresByFilters(filters: $filters) {
id
_id
application_id
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
customer_id
crb_transaction_id
mobile_analysis_id
document_id
crb_score
crb_past_default_record
customer_age
big_loan_default
model_type
fate_guide_message
requires_recheck
sale_agent_id
available_plans
version
sku
type
active
devicePrice
durationMonths
age
loanHistory {
status
accountStatus
principal_amount
originalAmount
instalment_amount
scheduledPaymentAmount
term_months
repaymentPeriod
}
signals {
slopeBucket
spinAffordability
slopePctPerMonth
bettingRatio
p2pShare
cov
age
}
tier
status
rejectionReason
statementLength
minimumRequired
sdiPct
maxMonthlyInstallment
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
productBand
canonicalProductBand
depositLevel
affordabilitySource
affordabilityValue
adjustedAffordability
crbInferredAffordability
recommendation
slopeBucket
slopeHaircutPct
bettingRatio
p2pShare
crbPositiveScore
cov
productBands
deviceAssessment
customerName
assessedAt
modelVersion
formulas {
grossInflows
inorganicBanks
inorganicMfis
inorganicMobileLenders
inorganicBetting
inorganicInsurance
inorganicTotal
inorganicPct
netInflows
essentials
loanRepayments
frequentP2pSent
frequentP2pTxnsPm
nondiscretionary
nondiscretionaryPct
disposableIncome
disposableIncomeMonthly
monthlyDataPoints
covBucket
dirPct
p2pReceivedTotal
top10P2pTotal
top10P2pShare
p2pHaircutPct
loanExposure
fulizaPerMonth
fulizaOvercountFlag
financialHaircutPct
bettingSent
bettingPerMonth
bettingFreqFlag
bettingHaircutPct
totalRafPct
maxInstallmentPreRaf
maxInstallment
rejected
negativeDisposableFlag
}
explanation {
recommendation
reason
affordabilitySource
spinAffordability
crbInferredAffordability
adjustedAffordability
sdiPct
tier
tierThresholds
slopeBucket
haircutPct
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
keyFormulas
rafMonitoring {
...FateGuideExplainerRafMonitoringDtoFragment
}
}
createdAt
updatedAt
}
}
Variables
{"filters": FateGuideScoresFilterInput}
Response
{
"data": {
"fateGuideScoresByFilters": {
"id": 4,
"_id": "4",
"application_id": "4",
"application": ApplicationEntityGraphQL,
"customer_id": "abc123",
"crb_transaction_id": "4",
"mobile_analysis_id": "abc123",
"document_id": 4,
"crb_score": "abc123",
"crb_past_default_record": 987.65,
"customer_age": 987,
"big_loan_default": "abc123",
"model_type": "abc123",
"fate_guide_message": "abc123",
"requires_recheck": true,
"sale_agent_id": "abc123",
"available_plans": ["xyz789"],
"version": 987,
"sku": "abc123",
"type": "abc123",
"active": false,
"devicePrice": 123.45,
"durationMonths": 123,
"age": 123.45,
"loanHistory": [FateGuideRuntimeLoanRecordDto],
"signals": FateGuideRuntimeSignalsDto,
"tier": "abc123",
"status": "abc123",
"rejectionReason": "abc123",
"statementLength": 987.65,
"minimumRequired": 987.65,
"sdiPct": 987.65,
"maxMonthlyInstallment": 123.45,
"maxCashPrice": 123.45,
"maxCashPriceHigh": 123.45,
"maxCashPriceMosaver": 123.45,
"productBand": "abc123",
"canonicalProductBand": "abc123",
"depositLevel": "abc123",
"affordabilitySource": "xyz789",
"affordabilityValue": 987.65,
"adjustedAffordability": 123.45,
"crbInferredAffordability": 987.65,
"recommendation": "abc123",
"slopeBucket": "xyz789",
"slopeHaircutPct": 987.65,
"bettingRatio": 123.45,
"p2pShare": 123.45,
"crbPositiveScore": 987.65,
"cov": 987.65,
"productBands": {},
"deviceAssessment": {},
"customerName": "xyz789",
"assessedAt": "abc123",
"modelVersion": "xyz789",
"formulas": FateGuideRuntimeFormulasDto,
"explanation": FateGuideRuntimeExplanationDto,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
fateGuideScoresCount
Description
Get count of fate guide scores with optional filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - FateGuideScoresFilterInput
|
Example
Query
query fateGuideScoresCount($filters: FateGuideScoresFilterInput) {
fateGuideScoresCount(filters: $filters)
}
Variables
{"filters": FateGuideScoresFilterInput}
Response
{"data": {"fateGuideScoresCount": 987.65}}
fateGuideScoresCursor
Description
Get cursor-paginated fate guide scores
Response
Returns a FateGuideScoresCursorPaginatedResponse!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - FateGuideScoresFilterInput
|
|
regexFilters - FateGuideScoresFilterInput
|
Example
Query
query fateGuideScoresCursor(
$pagination: CursorPaginationInputType,
$filters: FateGuideScoresFilterInput,
$regexFilters: FateGuideScoresFilterInput
) {
fateGuideScoresCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
customer_id
crb_transaction_id
mobile_analysis_id
document_id
crb_score
crb_past_default_record
customer_age
big_loan_default
model_type
fate_guide_message
requires_recheck
sale_agent_id
available_plans
version
sku
type
active
devicePrice
durationMonths
age
loanHistory {
...FateGuideRuntimeLoanRecordDtoFragment
}
signals {
...FateGuideRuntimeSignalsDtoFragment
}
tier
status
rejectionReason
statementLength
minimumRequired
sdiPct
maxMonthlyInstallment
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
productBand
canonicalProductBand
depositLevel
affordabilitySource
affordabilityValue
adjustedAffordability
crbInferredAffordability
recommendation
slopeBucket
slopeHaircutPct
bettingRatio
p2pShare
crbPositiveScore
cov
productBands
deviceAssessment
customerName
assessedAt
modelVersion
formulas {
...FateGuideRuntimeFormulasDtoFragment
}
explanation {
...FateGuideRuntimeExplanationDtoFragment
}
createdAt
updatedAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": FateGuideScoresFilterInput,
"regexFilters": FateGuideScoresFilterInput
}
Response
{
"data": {
"fateGuideScoresCursor": {
"data": [FateGuideScoresDto],
"pagination": CursorPaginationMetadata
}
}
}
fateGuideScoresOffset
Description
Get offset-paginated fate guide scores
Response
Returns a FateGuideScoresOffsetPaginatedResponse!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - FateGuideScoresFilterInput
|
|
regexFilters - FateGuideScoresFilterInput
|
Example
Query
query fateGuideScoresOffset(
$pagination: OffsetPaginationInputType,
$filters: FateGuideScoresFilterInput,
$regexFilters: FateGuideScoresFilterInput
) {
fateGuideScoresOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
customer_id
crb_transaction_id
mobile_analysis_id
document_id
crb_score
crb_past_default_record
customer_age
big_loan_default
model_type
fate_guide_message
requires_recheck
sale_agent_id
available_plans
version
sku
type
active
devicePrice
durationMonths
age
loanHistory {
...FateGuideRuntimeLoanRecordDtoFragment
}
signals {
...FateGuideRuntimeSignalsDtoFragment
}
tier
status
rejectionReason
statementLength
minimumRequired
sdiPct
maxMonthlyInstallment
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
productBand
canonicalProductBand
depositLevel
affordabilitySource
affordabilityValue
adjustedAffordability
crbInferredAffordability
recommendation
slopeBucket
slopeHaircutPct
bettingRatio
p2pShare
crbPositiveScore
cov
productBands
deviceAssessment
customerName
assessedAt
modelVersion
formulas {
...FateGuideRuntimeFormulasDtoFragment
}
explanation {
...FateGuideRuntimeExplanationDtoFragment
}
createdAt
updatedAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": FateGuideScoresFilterInput,
"regexFilters": FateGuideScoresFilterInput
}
Response
{
"data": {
"fateGuideScoresOffset": {
"data": [FateGuideScoresDto],
"metadata": OffsetPaginationMetadata
}
}
}
flashSale
Response
Returns a FlashSaleObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query flashSale($id: ID!) {
flashSale(id: $id) {
flash_sale_id
title
slug
description
start_date
end_date
status
max_quantity
sold_quantity
min_discount_percentage
is_featured
banner_image
icon_url
countdown_display
priority
participating_sellers
performance_metrics
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"flashSale": {
"flash_sale_id": 4,
"title": "abc123",
"slug": "abc123",
"description": "xyz789",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 123,
"sold_quantity": 123,
"min_discount_percentage": 123.45,
"is_featured": false,
"banner_image": "abc123",
"icon_url": "abc123",
"countdown_display": true,
"priority": 987,
"participating_sellers": ["abc123"],
"performance_metrics": {},
"meta_title": "xyz789",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
flashSaleItem
Response
Returns a FlashSaleItemObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query flashSaleItem($id: ID!) {
flashSaleItem(id: $id) {
flash_sale_item_id
flash_sale_id
seller_catalog_id
product_id
sku_id
original_price
flash_sale_price
discount_percentage
stock_allocated
stock_sold
stock_remaining
max_per_customer
display_priority
is_featured
badge_text
created_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"flashSaleItem": {
"flash_sale_item_id": 4,
"flash_sale_id": "abc123",
"seller_catalog_id": "abc123",
"product_id": "abc123",
"sku_id": "xyz789",
"original_price": 123.45,
"flash_sale_price": 123.45,
"discount_percentage": 123.45,
"stock_allocated": 123,
"stock_sold": 123,
"stock_remaining": 987,
"max_per_customer": 987,
"display_priority": 123,
"is_featured": true,
"badge_text": "xyz789",
"created_at": "2007-12-03T10:15:30Z"
}
}
}
flashSaleItems
Response
Returns [FlashSaleItemObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - FlashSaleItemFilterInput
|
Example
Query
query flashSaleItems($filter: FlashSaleItemFilterInput) {
flashSaleItems(filter: $filter) {
flash_sale_item_id
flash_sale_id
seller_catalog_id
product_id
sku_id
original_price
flash_sale_price
discount_percentage
stock_allocated
stock_sold
stock_remaining
max_per_customer
display_priority
is_featured
badge_text
created_at
}
}
Variables
{"filter": FlashSaleItemFilterInput}
Response
{
"data": {
"flashSaleItems": [
{
"flash_sale_item_id": "4",
"flash_sale_id": "abc123",
"seller_catalog_id": "xyz789",
"product_id": "abc123",
"sku_id": "xyz789",
"original_price": 123.45,
"flash_sale_price": 987.65,
"discount_percentage": 987.65,
"stock_allocated": 123,
"stock_sold": 123,
"stock_remaining": 987,
"max_per_customer": 987,
"display_priority": 987,
"is_featured": true,
"badge_text": "abc123",
"created_at": "2007-12-03T10:15:30Z"
}
]
}
}
flashSaleItemsByFlashSale
Response
Returns [FlashSaleItemObjectType!]!
Arguments
| Name | Description |
|---|---|
flashSaleId - ID!
|
Example
Query
query flashSaleItemsByFlashSale($flashSaleId: ID!) {
flashSaleItemsByFlashSale(flashSaleId: $flashSaleId) {
flash_sale_item_id
flash_sale_id
seller_catalog_id
product_id
sku_id
original_price
flash_sale_price
discount_percentage
stock_allocated
stock_sold
stock_remaining
max_per_customer
display_priority
is_featured
badge_text
created_at
}
}
Variables
{"flashSaleId": "4"}
Response
{
"data": {
"flashSaleItemsByFlashSale": [
{
"flash_sale_item_id": "4",
"flash_sale_id": "xyz789",
"seller_catalog_id": "xyz789",
"product_id": "xyz789",
"sku_id": "xyz789",
"original_price": 987.65,
"flash_sale_price": 123.45,
"discount_percentage": 123.45,
"stock_allocated": 987,
"stock_sold": 123,
"stock_remaining": 123,
"max_per_customer": 123,
"display_priority": 987,
"is_featured": false,
"badge_text": "abc123",
"created_at": "2007-12-03T10:15:30Z"
}
]
}
}
flashSaleItemsWithCursorPagination
Response
Returns a CursorPaginatedFlashSaleItems!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - FlashSaleItemFilterInput
|
|
regexFilters - FlashSaleItemFilterInput
|
Example
Query
query flashSaleItemsWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: FlashSaleItemFilterInput,
$regexFilters: FlashSaleItemFilterInput
) {
flashSaleItemsWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
flash_sale_item_id
flash_sale_id
seller_catalog_id
product_id
sku_id
original_price
flash_sale_price
discount_percentage
stock_allocated
stock_sold
stock_remaining
max_per_customer
display_priority
is_featured
badge_text
created_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": FlashSaleItemFilterInput,
"regexFilters": FlashSaleItemFilterInput
}
Response
{
"data": {
"flashSaleItemsWithCursorPagination": {
"data": [FlashSaleItemObjectType],
"pagination": CursorPaginationMetadata
}
}
}
flashSaleItemsWithOffsetPagination
Response
Returns an OffsetPaginatedFlashSaleItems!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - FlashSaleItemFilterInput
|
|
regexFilters - FlashSaleItemFilterInput
|
Example
Query
query flashSaleItemsWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: FlashSaleItemFilterInput,
$regexFilters: FlashSaleItemFilterInput
) {
flashSaleItemsWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
flash_sale_item_id
flash_sale_id
seller_catalog_id
product_id
sku_id
original_price
flash_sale_price
discount_percentage
stock_allocated
stock_sold
stock_remaining
max_per_customer
display_priority
is_featured
badge_text
created_at
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": FlashSaleItemFilterInput,
"regexFilters": FlashSaleItemFilterInput
}
Response
{
"data": {
"flashSaleItemsWithOffsetPagination": {
"data": [FlashSaleItemObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
flashSales
Response
Returns [FlashSaleObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - FlashSaleFilterInput
|
Example
Query
query flashSales($filter: FlashSaleFilterInput) {
flashSales(filter: $filter) {
flash_sale_id
title
slug
description
start_date
end_date
status
max_quantity
sold_quantity
min_discount_percentage
is_featured
banner_image
icon_url
countdown_display
priority
participating_sellers
performance_metrics
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"filter": FlashSaleFilterInput}
Response
{
"data": {
"flashSales": [
{
"flash_sale_id": 4,
"title": "abc123",
"slug": "abc123",
"description": "abc123",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 123,
"sold_quantity": 123,
"min_discount_percentage": 987.65,
"is_featured": true,
"banner_image": "abc123",
"icon_url": "abc123",
"countdown_display": true,
"priority": 987,
"participating_sellers": ["abc123"],
"performance_metrics": {},
"meta_title": "xyz789",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
flashSalesWithCursorPagination
Response
Returns a CursorPaginatedFlashSales!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - FlashSaleFilterInput
|
|
regexFilters - FlashSaleFilterInput
|
Example
Query
query flashSalesWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: FlashSaleFilterInput,
$regexFilters: FlashSaleFilterInput
) {
flashSalesWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
flash_sale_id
title
slug
description
start_date
end_date
status
max_quantity
sold_quantity
min_discount_percentage
is_featured
banner_image
icon_url
countdown_display
priority
participating_sellers
performance_metrics
meta_title
meta_description
created_at
updated_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": FlashSaleFilterInput,
"regexFilters": FlashSaleFilterInput
}
Response
{
"data": {
"flashSalesWithCursorPagination": {
"data": [FlashSaleObjectType],
"pagination": CursorPaginationMetadata
}
}
}
flashSalesWithOffsetPagination
Response
Returns an OffsetPaginatedFlashSales!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - FlashSaleFilterInput
|
|
regexFilters - FlashSaleFilterInput
|
Example
Query
query flashSalesWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: FlashSaleFilterInput,
$regexFilters: FlashSaleFilterInput
) {
flashSalesWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
flash_sale_id
title
slug
description
start_date
end_date
status
max_quantity
sold_quantity
min_discount_percentage
is_featured
banner_image
icon_url
countdown_display
priority
participating_sellers
performance_metrics
meta_title
meta_description
created_at
updated_at
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": FlashSaleFilterInput,
"regexFilters": FlashSaleFilterInput
}
Response
{
"data": {
"flashSalesWithOffsetPagination": {
"data": [FlashSaleObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
frontDeskRepairs
Response
Returns [RepairObjectType!]!
Example
Query
query frontDeskRepairs {
frontDeskRepairs {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Response
{
"data": {
"frontDeskRepairs": [
{
"repair_id": 4,
"repair_display_id": "abc123",
"requires_technician": true,
"inventory_id": "xyz789",
"customer_id": "xyz789",
"original_sale_id": "xyz789",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "xyz789",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
getAvailableStock
getGroup
Response
Returns a GroupObjectType
Arguments
| Name | Description |
|---|---|
id - String!
|
Example
Query
query getGroup($id: String!) {
getGroup(id: $id) {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
childrenDetails {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{"id": "xyz789"}
Response
{
"data": {
"getGroup": {
"_id": "abc123",
"keycloak_id": "abc123",
"name": "abc123",
"realm": "abc123",
"path": "xyz789",
"description": "abc123",
"attributes": {},
"parent_id": "xyz789",
"children": ["abc123"],
"level": 123,
"member_keycloak_ids": ["xyz789"],
"member_count": 987,
"synced_at": "2007-12-03T10:15:30Z",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"parent": GroupObjectType,
"childrenDetails": [GroupObjectType]
}
}
}
getGroupChildren
Response
Returns [GroupObjectType!]!
Example
Query
query getGroupChildren(
$parentId: String!,
$direct: Boolean
) {
getGroupChildren(
parentId: $parentId,
direct: $direct
) {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
childrenDetails {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{"parentId": "abc123", "direct": false}
Response
{
"data": {
"getGroupChildren": [
{
"_id": "abc123",
"keycloak_id": "xyz789",
"name": "abc123",
"realm": "abc123",
"path": "xyz789",
"description": "abc123",
"attributes": {},
"parent_id": "abc123",
"children": ["abc123"],
"level": 987,
"member_keycloak_ids": ["xyz789"],
"member_count": 123,
"synced_at": "2007-12-03T10:15:30Z",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"parent": GroupObjectType,
"childrenDetails": [GroupObjectType]
}
]
}
}
getGroupDepth
getGroupMemberCount
Example
Query
query getGroupMemberCount(
$groupId: String!,
$includeChildren: Boolean
) {
getGroupMemberCount(
groupId: $groupId,
includeChildren: $includeChildren
)
}
Variables
{
"groupId": "xyz789",
"includeChildren": false
}
Response
{"data": {"getGroupMemberCount": 987.65}}
getGroupParents
Response
Returns [GroupObjectType!]!
Arguments
| Name | Description |
|---|---|
childId - String!
|
Example
Query
query getGroupParents($childId: String!) {
getGroupParents(childId: $childId) {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
childrenDetails {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{"childId": "xyz789"}
Response
{
"data": {
"getGroupParents": [
{
"_id": "abc123",
"keycloak_id": "xyz789",
"name": "abc123",
"realm": "xyz789",
"path": "xyz789",
"description": "abc123",
"attributes": {},
"parent_id": "xyz789",
"children": ["abc123"],
"level": 123,
"member_keycloak_ids": ["abc123"],
"member_count": 987,
"synced_at": "2007-12-03T10:15:30Z",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"parent": GroupObjectType,
"childrenDetails": [GroupObjectType]
}
]
}
}
getGroupRealms
Response
Returns [String!]!
Example
Query
query getGroupRealms {
getGroupRealms
}
Response
{"data": {"getGroupRealms": ["abc123"]}}
getGroupTree
Response
Returns a GroupTreeResponse!
Arguments
| Name | Description |
|---|---|
realm - String
|
Example
Query
query getGroupTree($realm: String) {
getGroupTree(realm: $realm) {
roots {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
totalGroups
realm
}
}
Variables
{"realm": "abc123"}
Response
{
"data": {
"getGroupTree": {
"roots": [GroupObjectType],
"totalGroups": 123,
"realm": "xyz789"
}
}
}
getGroups
Response
Returns a GroupListResponse!
Arguments
| Name | Description |
|---|---|
filter - GroupFilterInput
|
Example
Query
query getGroups($filter: GroupFilterInput) {
getGroups(filter: $filter) {
groups {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
total
realm
}
}
Variables
{"filter": GroupFilterInput}
Response
{
"data": {
"getGroups": {
"groups": [GroupObjectType],
"total": 123,
"realm": "xyz789"
}
}
}
getManagedRoles
Response
Returns [RoleObjectType!]!
Arguments
| Name | Description |
|---|---|
managerRoleName - String!
|
Example
Query
query getManagedRoles($managerRoleName: String!) {
getManagedRoles(managerRoleName: $managerRoleName) {
_id
id
name
level
permissions
description
canManage
realm
}
}
Variables
{"managerRoleName": "xyz789"}
Response
{
"data": {
"getManagedRoles": [
{
"_id": "abc123",
"id": "xyz789",
"name": "abc123",
"level": 987,
"permissions": ["xyz789"],
"description": "xyz789",
"canManage": ["abc123"],
"realm": "xyz789"
}
]
}
}
getRoleById
Response
Returns a RoleObjectType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query getRoleById($id: ID!) {
getRoleById(id: $id) {
_id
id
name
level
permissions
description
canManage
realm
}
}
Variables
{"id": 4}
Response
{
"data": {
"getRoleById": {
"_id": "abc123",
"id": "xyz789",
"name": "xyz789",
"level": 123,
"permissions": ["abc123"],
"description": "abc123",
"canManage": ["abc123"],
"realm": "xyz789"
}
}
}
getRoleByName
Response
Returns a RoleObjectType
Example
Query
query getRoleByName(
$name: String!,
$realm: String
) {
getRoleByName(
name: $name,
realm: $realm
) {
_id
id
name
level
permissions
description
canManage
realm
}
}
Variables
{
"name": "abc123",
"realm": "abc123"
}
Response
{
"data": {
"getRoleByName": {
"_id": "abc123",
"id": "abc123",
"name": "abc123",
"level": 123,
"permissions": ["abc123"],
"description": "abc123",
"canManage": ["xyz789"],
"realm": "abc123"
}
}
}
getRoleHierarchy
getRoles
Response
Returns [RoleObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - RoleFilterInput
|
Example
Query
query getRoles($filter: RoleFilterInput) {
getRoles(filter: $filter) {
_id
id
name
level
permissions
description
canManage
realm
}
}
Variables
{"filter": RoleFilterInput}
Response
{
"data": {
"getRoles": [
{
"_id": "xyz789",
"id": "xyz789",
"name": "xyz789",
"level": 987,
"permissions": ["xyz789"],
"description": "abc123",
"canManage": ["xyz789"],
"realm": "abc123"
}
]
}
}
getUnpaidSales
Response
Returns [SalesObjectType!]!
Arguments
| Name | Description |
|---|---|
customerId - ID!
|
Example
Query
query getUnpaidSales($customerId: ID!) {
getUnpaidSales(customerId: $customerId) {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
inventory_id
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
loan_contract {
contract_id
loan_id
sale_id
customer_id
customer {
...RawCustomersDtoFragment
}
opening_date
duration
upfront_payment
deposit
repayment_type
gross_loan_amount
net_loan_amount
interest_rate
repayment_rate
interest_calculation_method
payment_allocation_method
disbursement_date
maturity_date
first_payment_due_date
grace_period_days
penalty_rate_per_day
is_restructured
original_contract_id
loan_product_code
loan_status_override
early_payoff_discounts {
...LoanEarlyPayoffDiscountTypeFragment
}
metadata
created_at
updated_at
installments {
...LoanInstallmentDtoFragment
}
overdueInstallments {
...LoanInstallmentDtoFragment
}
nextDueInstallment {
...LoanInstallmentDtoFragment
}
ledgerEntries {
...LoanLedgerDtoFragment
}
delinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
paymentAllocations {
...PaymentAllocationDtoFragment
}
latest_ledger_id
grace_period_status
grace_period_category
grace_period_credit_expiry
grace_period_last_trigger_source
returned_date
is_lost
latest_ledger {
...LoanLedgerDtoFragment
}
contract {
...LoanContractDtoFragment
}
}
commission {
product_commission
loan_commission
cash_commission
channel_type
commission_type
commission_rule_id
commission_override_id
is_override
}
cash_price
reporting {
loan_id
business_model
is_3p_sale
partner_name
credit_check_done
cash_price
loan_price
loan_period
}
}
}
Variables
{"customerId": "4"}
Response
{
"data": {
"getUnpaidSales": [
{
"sale_id": 4,
"sale_date": "2007-12-03T10:15:30Z",
"order_id": "4",
"customer_id": 4,
"sale_agent_id": "4",
"submitting_agent_id": "4",
"sfm_id": "4",
"price_plan_id": 4,
"pricePlan": PricePlanObjectType,
"inventory_id": 4,
"inventory": InventoryObjectType,
"payment_type": "REPAIR",
"payment_status": "UNPAID",
"normal_high_deposit": "NORMAL",
"final_sale_price": 987.65,
"upfront_payment": 123.45,
"gross_loan_amount": 123.45,
"marketplace_fee": 123.45,
"seller_payout": 987.65,
"invoice_number": "xyz789",
"status": "ACTIVE",
"return_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"order": OrderObjectType,
"loan_contract": LoanContractDto,
"commission": CommissionSnapshotType,
"cash_price": 987.65,
"reporting": SaleReportingType
}
]
}
}
getUserGroups
Response
Returns [GroupObjectType!]!
Arguments
| Name | Description |
|---|---|
userKeycloakId - String!
|
Example
Query
query getUserGroups($userKeycloakId: String!) {
getUserGroups(userKeycloakId: $userKeycloakId) {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
childrenDetails {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{"userKeycloakId": "xyz789"}
Response
{
"data": {
"getUserGroups": [
{
"_id": "xyz789",
"keycloak_id": "abc123",
"name": "abc123",
"realm": "xyz789",
"path": "abc123",
"description": "abc123",
"attributes": {},
"parent_id": "abc123",
"children": ["xyz789"],
"level": 123,
"member_keycloak_ids": ["abc123"],
"member_count": 123,
"synced_at": "2007-12-03T10:15:30Z",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"parent": GroupObjectType,
"childrenDetails": [GroupObjectType]
}
]
}
}
groupExists
groupsCursor
Response
Returns a CursorPaginatedGroups!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - GroupFilterInput
|
|
regexFilters - GroupFilterInput
|
Example
Query
query groupsCursor(
$pagination: CursorPaginationInputType!,
$filters: GroupFilterInput,
$regexFilters: GroupFilterInput
) {
groupsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": GroupFilterInput,
"regexFilters": GroupFilterInput
}
Response
{
"data": {
"groupsCursor": {
"data": [GroupObjectType],
"pagination": CursorPaginationMetadata
}
}
}
groupsOffset
Response
Returns an OffsetPaginatedGroups!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - GroupFilterInput
|
|
regexFilters - GroupFilterInput
|
Example
Query
query groupsOffset(
$pagination: OffsetPaginationInputType,
$filters: GroupFilterInput,
$regexFilters: GroupFilterInput
) {
groupsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": GroupFilterInput,
"regexFilters": GroupFilterInput
}
Response
{
"data": {
"groupsOffset": {
"data": [GroupObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
hello
Description
Test GraphQL endpoint
Response
Returns a TestResponse!
Example
Query
query hello {
hello {
message
timestamp
version
}
}
Response
{
"data": {
"hello": {
"message": "abc123",
"timestamp": "2007-12-03T10:15:30Z",
"version": "xyz789"
}
}
}
highPriorityRepairs
Response
Returns [RepairObjectType!]!
Example
Query
query highPriorityRepairs {
highPriorityRepairs {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Response
{
"data": {
"highPriorityRepairs": [
{
"repair_id": "4",
"repair_display_id": "xyz789",
"requires_technician": true,
"inventory_id": "abc123",
"customer_id": "xyz789",
"original_sale_id": "abc123",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "xyz789",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
identityVerificationTransaction
Description
Get a single identity verification transaction by ID
Response
Returns an IdentityVerificationTransactionDto
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query identityVerificationTransaction($id: ID!) {
identityVerificationTransaction(id: $id) {
_id
provider
full_name
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_alive
identification_type
identification_number
id_serial
uploaded_photo
phone
email
country
record_status
createdAt
}
}
Variables
{"id": "4"}
Response
{
"data": {
"identityVerificationTransaction": {
"_id": "4",
"provider": "TRANSUNION",
"full_name": "abc123",
"gender": "xyz789",
"date_of_birth": "xyz789",
"place_of_birth": "xyz789",
"kra_pin": "abc123",
"citizenship": "abc123",
"is_alive": 987,
"identification_type": "abc123",
"identification_number": "xyz789",
"id_serial": "abc123",
"uploaded_photo": "xyz789",
"phone": "xyz789",
"email": "xyz789",
"country": "abc123",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
identityVerificationTransactionByFilters
Description
Get a single identity verification transaction by filters
Response
Returns an IdentityVerificationTransactionDto
Arguments
| Name | Description |
|---|---|
filters - IdentityVerificationTransactionFilterInput!
|
Example
Query
query identityVerificationTransactionByFilters($filters: IdentityVerificationTransactionFilterInput!) {
identityVerificationTransactionByFilters(filters: $filters) {
_id
provider
full_name
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_alive
identification_type
identification_number
id_serial
uploaded_photo
phone
email
country
record_status
createdAt
}
}
Variables
{"filters": IdentityVerificationTransactionFilterInput}
Response
{
"data": {
"identityVerificationTransactionByFilters": {
"_id": "4",
"provider": "TRANSUNION",
"full_name": "xyz789",
"gender": "xyz789",
"date_of_birth": "xyz789",
"place_of_birth": "abc123",
"kra_pin": "abc123",
"citizenship": "xyz789",
"is_alive": 123,
"identification_type": "xyz789",
"identification_number": "abc123",
"id_serial": "xyz789",
"uploaded_photo": "abc123",
"phone": "abc123",
"email": "xyz789",
"country": "abc123",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
identityVerificationTransactionCount
Description
Get count of identity verification transactions with optional filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - IdentityVerificationTransactionFilterInput
|
Example
Query
query identityVerificationTransactionCount($filters: IdentityVerificationTransactionFilterInput) {
identityVerificationTransactionCount(filters: $filters)
}
Variables
{"filters": IdentityVerificationTransactionFilterInput}
Response
{"data": {"identityVerificationTransactionCount": 123.45}}
identityVerificationTransactionsCursor
Description
Get paginated identity verification transactions using cursor-based pagination
Response
Returns an IdentityVerificationTransactionCursorPaginatedResponse!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - IdentityVerificationTransactionFilterInput
|
|
regexFilters - IdentityVerificationTransactionFilterInput
|
Example
Query
query identityVerificationTransactionsCursor(
$pagination: CursorPaginationInputType,
$filters: IdentityVerificationTransactionFilterInput,
$regexFilters: IdentityVerificationTransactionFilterInput
) {
identityVerificationTransactionsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
provider
full_name
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_alive
identification_type
identification_number
id_serial
uploaded_photo
phone
email
country
record_status
createdAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": IdentityVerificationTransactionFilterInput,
"regexFilters": IdentityVerificationTransactionFilterInput
}
Response
{
"data": {
"identityVerificationTransactionsCursor": {
"data": [IdentityVerificationTransactionDto],
"pagination": CursorPaginationMetadata
}
}
}
identityVerificationTransactionsOffset
Description
Get paginated identity verification transactions using offset-based pagination
Response
Returns an IdentityVerificationTransactionOffsetPaginatedResponse!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - IdentityVerificationTransactionFilterInput
|
|
regexFilters - IdentityVerificationTransactionFilterInput
|
Example
Query
query identityVerificationTransactionsOffset(
$pagination: OffsetPaginationInputType,
$filters: IdentityVerificationTransactionFilterInput,
$regexFilters: IdentityVerificationTransactionFilterInput
) {
identityVerificationTransactionsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
provider
full_name
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_alive
identification_type
identification_number
id_serial
uploaded_photo
phone
email
country
record_status
createdAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": IdentityVerificationTransactionFilterInput,
"regexFilters": IdentityVerificationTransactionFilterInput
}
Response
{
"data": {
"identityVerificationTransactionsOffset": {
"data": [IdentityVerificationTransactionDto],
"metadata": OffsetPaginationMetadata
}
}
}
inProgressRepairs
Response
Returns [RepairObjectType!]!
Example
Query
query inProgressRepairs {
inProgressRepairs {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Response
{
"data": {
"inProgressRepairs": [
{
"repair_id": 4,
"repair_display_id": "xyz789",
"requires_technician": true,
"inventory_id": "xyz789",
"customer_id": "abc123",
"original_sale_id": "abc123",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "xyz789",
"hq_diagnostic_notes": "xyz789",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
inactiveListings
Response
Returns [SellerCatalogObjectType!]!
Example
Query
query inactiveListings {
inactiveListings {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Response
{
"data": {
"inactiveListings": [
{
"seller_catalog_id": 4,
"seller_id": "abc123",
"sku_id": "xyz789",
"cost_price": 123.45,
"retail_price": 123.45,
"currency": "xyz789",
"stock_on_hand": 123,
"reserved_stock": 987,
"is_active": false,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 987,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
]
}
}
inventory
Response
Returns an InventoryObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query inventory($id: ID!) {
inventory(id: $id) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"inventory": {
"inventory_id": 4,
"product_id": "abc123",
"sku_id": "abc123",
"condition_id": "xyz789",
"seller_catalog_id": "abc123",
"seller_id": "abc123",
"serial_number": "xyz789",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": false,
"qc_report": QCReportType,
"qc_report_link": "abc123",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 123.45,
"contract_id": "abc123",
"mdm_status": {},
"batch_number": "xyz789",
"location_id": "xyz789",
"inspection_report": "abc123",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "xyz789",
"supplier_code": "xyz789",
"supplier_order_reference": "abc123",
"customer_id": "xyz789",
"sale_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
}
}
inventoryAllocation
Response
Returns an InventoryAllocationObjectType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query inventoryAllocation($id: ID!) {
inventoryAllocation(id: $id) {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
created_at
updated_at
}
}
Variables
{"id": "4"}
Response
{
"data": {
"inventoryAllocation": {
"inventory_allocation_id": 4,
"order_item_id": 4,
"inventory_id": "4",
"quantity_allocated": 987.65,
"allocation_status": "RESERVED",
"allocation_date": "2007-12-03T10:15:30Z",
"expiry_date": "2007-12-03T10:15:30Z",
"metadata": {},
"order_item": OrderItemObjectType,
"inventory": InventoryObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
inventoryAllocations
Response
Returns [InventoryAllocationObjectType!]
Arguments
| Name | Description |
|---|---|
filters - InventoryAllocationFilterInput
|
Example
Query
query inventoryAllocations($filters: InventoryAllocationFilterInput) {
inventoryAllocations(filters: $filters) {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
created_at
updated_at
}
}
Variables
{"filters": InventoryAllocationFilterInput}
Response
{
"data": {
"inventoryAllocations": [
{
"inventory_allocation_id": "4",
"order_item_id": 4,
"inventory_id": "4",
"quantity_allocated": 123.45,
"allocation_status": "RESERVED",
"allocation_date": "2007-12-03T10:15:30Z",
"expiry_date": "2007-12-03T10:15:30Z",
"metadata": {},
"order_item": OrderItemObjectType,
"inventory": InventoryObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
inventoryAllocationsCursor
Response
Returns a CursorsPaginatedInventoryAllocations
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - InventoryAllocationFilterInput
|
|
regexFilters - InventoryAllocationFilterInput
|
Example
Query
query inventoryAllocationsCursor(
$pagination: CursorPaginationInputType,
$filters: InventoryAllocationFilterInput,
$regexFilters: InventoryAllocationFilterInput
) {
inventoryAllocationsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
...OrderItemObjectTypeFragment
}
inventory {
...InventoryObjectTypeFragment
}
created_at
updated_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": InventoryAllocationFilterInput,
"regexFilters": InventoryAllocationFilterInput
}
Response
{
"data": {
"inventoryAllocationsCursor": {
"data": [InventoryAllocationObjectType],
"pagination": CursorPaginationMetadata
}
}
}
inventoryAllocationsOffset
Response
Returns an OffsetPaginatedInventoryAllocations!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - InventoryAllocationFilterInput
|
|
regexFilters - InventoryAllocationFilterInput
|
Example
Query
query inventoryAllocationsOffset(
$pagination: OffsetPaginationInputType,
$filters: InventoryAllocationFilterInput,
$regexFilters: InventoryAllocationFilterInput
) {
inventoryAllocationsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
...OrderItemObjectTypeFragment
}
inventory {
...InventoryObjectTypeFragment
}
created_at
updated_at
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": InventoryAllocationFilterInput,
"regexFilters": InventoryAllocationFilterInput
}
Response
{
"data": {
"inventoryAllocationsOffset": {
"data": [InventoryAllocationObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
inventoryByLocation
Response
Returns [InventoryObjectType!]!
Arguments
| Name | Description |
|---|---|
locationId - ID!
|
Example
Query
query inventoryByLocation($locationId: ID!) {
inventoryByLocation(locationId: $locationId) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{"locationId": 4}
Response
{
"data": {
"inventoryByLocation": [
{
"inventory_id": "4",
"product_id": "xyz789",
"sku_id": "abc123",
"condition_id": "abc123",
"seller_catalog_id": "xyz789",
"seller_id": "abc123",
"serial_number": "xyz789",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": false,
"qc_report": QCReportType,
"qc_report_link": "xyz789",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 987.65,
"contract_id": "abc123",
"mdm_status": {},
"batch_number": "abc123",
"location_id": "abc123",
"inspection_report": "xyz789",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "xyz789",
"supplier_code": "xyz789",
"supplier_order_reference": "xyz789",
"customer_id": "abc123",
"sale_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
]
}
}
inventoryBySeller
Response
Returns [InventoryObjectType!]!
Arguments
| Name | Description |
|---|---|
sellerId - ID!
|
Example
Query
query inventoryBySeller($sellerId: ID!) {
inventoryBySeller(sellerId: $sellerId) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{"sellerId": "4"}
Response
{
"data": {
"inventoryBySeller": [
{
"inventory_id": "4",
"product_id": "xyz789",
"sku_id": "abc123",
"condition_id": "xyz789",
"seller_catalog_id": "abc123",
"seller_id": "abc123",
"serial_number": "xyz789",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": false,
"qc_report": QCReportType,
"qc_report_link": "xyz789",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 123.45,
"contract_id": "abc123",
"mdm_status": {},
"batch_number": "xyz789",
"location_id": "abc123",
"inspection_report": "xyz789",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "abc123",
"supplier_code": "abc123",
"supplier_order_reference": "abc123",
"customer_id": "xyz789",
"sale_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
]
}
}
inventoryBySerialNumber
Response
Returns an InventoryObjectType
Arguments
| Name | Description |
|---|---|
serialNumber - String!
|
Example
Query
query inventoryBySerialNumber($serialNumber: String!) {
inventoryBySerialNumber(serialNumber: $serialNumber) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{"serialNumber": "xyz789"}
Response
{
"data": {
"inventoryBySerialNumber": {
"inventory_id": 4,
"product_id": "abc123",
"sku_id": "xyz789",
"condition_id": "xyz789",
"seller_catalog_id": "abc123",
"seller_id": "abc123",
"serial_number": "abc123",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": true,
"qc_report": QCReportType,
"qc_report_link": "abc123",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 123.45,
"contract_id": "abc123",
"mdm_status": {},
"batch_number": "abc123",
"location_id": "xyz789",
"inspection_report": "abc123",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "abc123",
"supplier_code": "xyz789",
"supplier_order_reference": "xyz789",
"customer_id": "abc123",
"sale_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
}
}
inventoryCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - InventoryFilterInput
|
Example
Query
query inventoryCount($filters: InventoryFilterInput) {
inventoryCount(filters: $filters)
}
Variables
{"filters": InventoryFilterInput}
Response
{"data": {"inventoryCount": 123.45}}
inventoryItems
Response
Returns [InventoryObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - InventoryFilterInput
|
Example
Query
query inventoryItems($filter: InventoryFilterInput) {
inventoryItems(filter: $filter) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{"filter": InventoryFilterInput}
Response
{
"data": {
"inventoryItems": [
{
"inventory_id": 4,
"product_id": "xyz789",
"sku_id": "abc123",
"condition_id": "abc123",
"seller_catalog_id": "xyz789",
"seller_id": "abc123",
"serial_number": "xyz789",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": false,
"qc_report": QCReportType,
"qc_report_link": "xyz789",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 123.45,
"contract_id": "xyz789",
"mdm_status": {},
"batch_number": "abc123",
"location_id": "xyz789",
"inspection_report": "xyz789",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "xyz789",
"supplier_code": "abc123",
"supplier_order_reference": "xyz789",
"customer_id": "xyz789",
"sale_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
]
}
}
inventoryLocation
Response
Returns an InventoryLocationObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query inventoryLocation($id: ID!) {
inventoryLocation(id: $id) {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
lat
lng
}
location_details {
country
county
sub_county
ward
town
landmark
gps_coordinates {
...InventoryCoordinatesObjectTypeFragment
}
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"inventoryLocation": {
"inventory_location_id": 4,
"location_name": "xyz789",
"location_type": "TRANSIT_INBOUND",
"location_code": "abc123",
"address": "xyz789",
"city": "xyz789",
"region": "abc123",
"coordinates": InventoryCoordinatesObjectType,
"location_details": InventoryLocationDetailsObjectType,
"user_id": "abc123",
"manager_id": "abc123",
"capacity": 123,
"current_stock": 987,
"is_active": false,
"operating_hours": {},
"seller_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
inventoryLocations
Response
Returns [InventoryLocationObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - InventoryLocationFilterInput
|
Example
Query
query inventoryLocations($filter: InventoryLocationFilterInput) {
inventoryLocations(filter: $filter) {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
lat
lng
}
location_details {
country
county
sub_county
ward
town
landmark
gps_coordinates {
...InventoryCoordinatesObjectTypeFragment
}
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
Variables
{"filter": InventoryLocationFilterInput}
Response
{
"data": {
"inventoryLocations": [
{
"inventory_location_id": 4,
"location_name": "xyz789",
"location_type": "TRANSIT_INBOUND",
"location_code": "abc123",
"address": "xyz789",
"city": "abc123",
"region": "abc123",
"coordinates": InventoryCoordinatesObjectType,
"location_details": InventoryLocationDetailsObjectType,
"user_id": "abc123",
"manager_id": "xyz789",
"capacity": 987,
"current_stock": 987,
"is_active": false,
"operating_hours": {},
"seller_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
inventoryLocationsByType
Response
Returns [InventoryLocationObjectType!]!
Arguments
| Name | Description |
|---|---|
type - LocationTypeEnum!
|
Example
Query
query inventoryLocationsByType($type: LocationTypeEnum!) {
inventoryLocationsByType(type: $type) {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
lat
lng
}
location_details {
country
county
sub_county
ward
town
landmark
gps_coordinates {
...InventoryCoordinatesObjectTypeFragment
}
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
Variables
{"type": "TRANSIT_INBOUND"}
Response
{
"data": {
"inventoryLocationsByType": [
{
"inventory_location_id": 4,
"location_name": "xyz789",
"location_type": "TRANSIT_INBOUND",
"location_code": "xyz789",
"address": "abc123",
"city": "xyz789",
"region": "xyz789",
"coordinates": InventoryCoordinatesObjectType,
"location_details": InventoryLocationDetailsObjectType,
"user_id": "abc123",
"manager_id": "abc123",
"capacity": 987,
"current_stock": 987,
"is_active": true,
"operating_hours": {},
"seller_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
inventoryLocationsWithCursorPagination
Response
Returns a CursorPaginatedInventoryLocations!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - InventoryLocationFilterInput
|
|
regexFilters - InventoryLocationFilterInput
|
Example
Query
query inventoryLocationsWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: InventoryLocationFilterInput,
$regexFilters: InventoryLocationFilterInput
) {
inventoryLocationsWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": InventoryLocationFilterInput,
"regexFilters": InventoryLocationFilterInput
}
Response
{
"data": {
"inventoryLocationsWithCursorPagination": {
"data": [InventoryLocationObjectType],
"pagination": CursorPaginationMetadata
}
}
}
inventoryLocationsWithOffsetPagination
Response
Returns an OffsetPaginatedInventoryLocations!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - InventoryLocationFilterInput
|
|
regexFilters - InventoryLocationFilterInput
|
Example
Query
query inventoryLocationsWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: InventoryLocationFilterInput,
$regexFilters: InventoryLocationFilterInput
) {
inventoryLocationsWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": InventoryLocationFilterInput,
"regexFilters": InventoryLocationFilterInput
}
Response
{
"data": {
"inventoryLocationsWithOffsetPagination": {
"data": [InventoryLocationObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
inventoryStats
Response
Returns an InventoryStats!
Example
Query
query inventoryStats {
inventoryStats {
total
available
inLoan
inRepair
reserved
}
}
Response
{
"data": {
"inventoryStats": {
"total": 123,
"available": 123,
"inLoan": 123,
"inRepair": 987,
"reserved": 123
}
}
}
inventoryWithCursorPagination
Response
Returns a CursorPaginatedInventory!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - InventoryFilterInput
|
|
regexFilters - InventoryFilterInput
|
Example
Query
query inventoryWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: InventoryFilterInput,
$regexFilters: InventoryFilterInput
) {
inventoryWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": InventoryFilterInput,
"regexFilters": InventoryFilterInput
}
Response
{
"data": {
"inventoryWithCursorPagination": {
"data": [InventoryObjectType],
"pagination": CursorPaginationMetadata
}
}
}
inventoryWithOffsetPagination
Response
Returns an OffsetPaginatedInventory!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - InventoryFilterInput
|
|
regexFilters - InventoryFilterInput
|
Example
Query
query inventoryWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: InventoryFilterInput,
$regexFilters: InventoryFilterInput
) {
inventoryWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": InventoryFilterInput,
"regexFilters": InventoryFilterInput
}
Response
{
"data": {
"inventoryWithOffsetPagination": {
"data": [InventoryObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
inventory_module
Description
Access inventory module operations
Response
Returns an InventoryModuleNamespace!
Example
Query
query inventory_module {
inventory_module {
categories {
createCategory {
...CategoryObjectTypeFragment
}
category {
...CategoryObjectTypeFragment
}
categories {
...CategoryObjectTypeFragment
}
categoriesWithOffsetPagination {
...OffsetPaginatedCategoriesFragment
}
categoriesWithCursorPagination {
...CursorPaginatedCategoriesFragment
}
updateCategory {
...CategoryObjectTypeFragment
}
deleteCategory
categoriesCount
categoryHierarchy {
...CategoryObjectTypeFragment
}
categoryPath {
...CategoryObjectTypeFragment
}
activeCategories {
...CategoryObjectTypeFragment
}
}
conditions {
createCondition {
...ConditionObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
conditions {
...ConditionObjectTypeFragment
}
conditionsWithOffsetPagination {
...OffsetPaginatedConditionsFragment
}
conditionsWithCursorPagination {
...CursorPaginatedConditionsFragment
}
updateCondition {
...ConditionObjectTypeFragment
}
deleteCondition
conditionsCount
}
flashSales {
createFlashSale {
...FlashSaleObjectTypeFragment
}
flashSale {
...FlashSaleObjectTypeFragment
}
flashSales {
...FlashSaleObjectTypeFragment
}
flashSalesWithOffsetPagination {
...OffsetPaginatedFlashSalesFragment
}
flashSalesWithCursorPagination {
...CursorPaginatedFlashSalesFragment
}
updateFlashSale {
...FlashSaleObjectTypeFragment
}
deleteFlashSale
activeFlashSales {
...FlashSaleObjectTypeFragment
}
upcomingFlashSales {
...FlashSaleObjectTypeFragment
}
activateFlashSale {
...FlashSaleObjectTypeFragment
}
endFlashSale {
...FlashSaleObjectTypeFragment
}
}
flashSaleItems {
createFlashSaleItem {
...FlashSaleItemObjectTypeFragment
}
flashSaleItem {
...FlashSaleItemObjectTypeFragment
}
flashSaleItems {
...FlashSaleItemObjectTypeFragment
}
flashSaleItemsWithOffsetPagination {
...OffsetPaginatedFlashSaleItemsFragment
}
flashSaleItemsWithCursorPagination {
...CursorPaginatedFlashSaleItemsFragment
}
updateFlashSaleItem {
...FlashSaleItemObjectTypeFragment
}
deleteFlashSaleItem
flashSaleItemsByFlashSale {
...FlashSaleItemObjectTypeFragment
}
activeFlashSaleItems {
...FlashSaleItemObjectTypeFragment
}
topDiscountedItems {
...FlashSaleItemObjectTypeFragment
}
updateFlashSaleItemDiscount {
...FlashSaleItemObjectTypeFragment
}
}
inventory {
createInventory {
... on InventoryObjectType {
...InventoryObjectTypeFragment
}
... on BulkInventoryResult {
...BulkInventoryResultFragment
}
}
inventory {
...InventoryObjectTypeFragment
}
inventoryItems {
...InventoryObjectTypeFragment
}
inventoryWithOffsetPagination {
...OffsetPaginatedInventoryFragment
}
inventoryWithCursorPagination {
...CursorPaginatedInventoryFragment
}
updateInventory {
...InventoryObjectTypeFragment
}
deleteInventory
inventoryCount
inventoryBySerialNumber {
...InventoryObjectTypeFragment
}
inventoryBySeller {
...InventoryObjectTypeFragment
}
inventoryByLocation {
...InventoryObjectTypeFragment
}
availableInventory {
...InventoryObjectTypeFragment
}
activeLoanDevices {
...InventoryObjectTypeFragment
}
inventoryStats {
...InventoryStatsFragment
}
updateInventoryPhysicalState {
...InventoryObjectTypeFragment
}
updateInventoryMdmEnrollment {
...InventoryObjectTypeFragment
}
updateInventoryEnrollmentStatus {
...InventoryObjectTypeFragment
}
assignInventoryToContract {
...InventoryObjectTypeFragment
}
moveInventoryToLocation {
...InventoryObjectTypeFragment
}
getConditionFromQCReport {
...QCReportWithConditionFragment
}
updateInventoryWithQCReport {
...InventoryObjectTypeFragment
}
}
inventoryLocations {
createInventoryLocation {
...InventoryLocationObjectTypeFragment
}
inventoryLocation {
...InventoryLocationObjectTypeFragment
}
inventoryLocations {
...InventoryLocationObjectTypeFragment
}
updateInventoryLocation {
...InventoryLocationObjectTypeFragment
}
deleteInventoryLocation
}
productOffers {
createProductOffer {
...ProductOfferObjectTypeFragment
}
productOffers {
...ProductOfferObjectTypeFragment
}
updateProductOffer {
...ProductOfferObjectTypeFragment
}
}
products {
createProduct {
...ProductObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
products {
...ProductObjectTypeFragment
}
productsWithOffsetPagination {
...OffsetPaginatedProductsFragment
}
productsWithCursorPagination {
...CursorPaginatedProductsFragment
}
updateProduct {
...ProductObjectTypeFragment
}
deleteProduct
productsCount
activeProducts {
...ProductObjectTypeFragment
}
productsByBrand {
...ProductObjectTypeFragment
}
productsByCategory {
...ProductObjectTypeFragment
}
pendingApprovalProducts {
...ProductObjectTypeFragment
}
searchProducts {
...ProductObjectTypeFragment
}
checkProductExists
approveProduct {
...ProductObjectTypeFragment
}
rejectProduct {
...ProductObjectTypeFragment
}
}
repair {
createRepair {
...RepairObjectTypeFragment
}
repairs {
...RepairObjectTypeFragment
}
updateRepair {
...RepairObjectTypeFragment
}
}
sellerCatalog {
createSellerCatalog {
...SellerCatalogObjectTypeFragment
}
createPlatformSellerCatalog {
...SellerCatalogObjectTypeFragment
}
sellerCatalogs {
...SellerCatalogObjectTypeFragment
}
updateSellerCatalog {
...SellerCatalogObjectTypeFragment
}
}
sellers {
createSeller {
...SellerObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
sellers {
...SellerObjectTypeFragment
}
updateSeller {
...SellerObjectTypeFragment
}
deleteSeller
}
skus {
createSku {
...SkuObjectTypeFragment
}
createSkuChild {
...SkuObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
skus {
...SkuObjectTypeFragment
}
skuAncestors {
...SkuObjectTypeFragment
}
skuTree {
...SkuObjectTypeFragment
}
skuEffectivePrice
updateSku {
...SkuObjectTypeFragment
}
deleteSku
}
skuAgentWhitelists {
skuAgentWhitelist {
...SkuAgentWhitelistObjectTypeFragment
}
skuAgentWhitelistItems {
...SkuAgentWhitelistObjectTypeFragment
}
createSkuAgentWhitelist {
...SkuAgentWhitelistObjectTypeFragment
}
updateSkuAgentWhitelist {
...SkuAgentWhitelistObjectTypeFragment
}
deleteSkuAgentWhitelist
}
}
}
Response
{
"data": {
"inventory_module": {
"categories": CategoriesNamespace,
"conditions": ConditionsNamespace,
"flashSales": FlashSalesNamespace,
"flashSaleItems": FlashSaleItemsNamespace,
"inventory": InventoryNamespace,
"inventoryLocations": InventoryLocationsNamespace,
"productOffers": ProductOffersNamespace,
"products": ProductsNamespace,
"repair": RepairNamespace,
"sellerCatalog": SellerCatalogNamespace,
"sellers": SellersNamespace,
"skus": SkusNamespace,
"skuAgentWhitelists": SkuAgentWhitelistsNamespace
}
}
}
latestFateGuideScoresByApplicationId
Description
Get the latest active fate guide score for an application
Response
Returns a FateGuideScoresDto
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
|
type - FateGuideType
|
Example
Query
query latestFateGuideScoresByApplicationId(
$applicationId: ID!,
$type: FateGuideType
) {
latestFateGuideScoresByApplicationId(
applicationId: $applicationId,
type: $type
) {
id
_id
application_id
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
customer_id
crb_transaction_id
mobile_analysis_id
document_id
crb_score
crb_past_default_record
customer_age
big_loan_default
model_type
fate_guide_message
requires_recheck
sale_agent_id
available_plans
version
sku
type
active
devicePrice
durationMonths
age
loanHistory {
status
accountStatus
principal_amount
originalAmount
instalment_amount
scheduledPaymentAmount
term_months
repaymentPeriod
}
signals {
slopeBucket
spinAffordability
slopePctPerMonth
bettingRatio
p2pShare
cov
age
}
tier
status
rejectionReason
statementLength
minimumRequired
sdiPct
maxMonthlyInstallment
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
productBand
canonicalProductBand
depositLevel
affordabilitySource
affordabilityValue
adjustedAffordability
crbInferredAffordability
recommendation
slopeBucket
slopeHaircutPct
bettingRatio
p2pShare
crbPositiveScore
cov
productBands
deviceAssessment
customerName
assessedAt
modelVersion
formulas {
grossInflows
inorganicBanks
inorganicMfis
inorganicMobileLenders
inorganicBetting
inorganicInsurance
inorganicTotal
inorganicPct
netInflows
essentials
loanRepayments
frequentP2pSent
frequentP2pTxnsPm
nondiscretionary
nondiscretionaryPct
disposableIncome
disposableIncomeMonthly
monthlyDataPoints
covBucket
dirPct
p2pReceivedTotal
top10P2pTotal
top10P2pShare
p2pHaircutPct
loanExposure
fulizaPerMonth
fulizaOvercountFlag
financialHaircutPct
bettingSent
bettingPerMonth
bettingFreqFlag
bettingHaircutPct
totalRafPct
maxInstallmentPreRaf
maxInstallment
rejected
negativeDisposableFlag
}
explanation {
recommendation
reason
affordabilitySource
spinAffordability
crbInferredAffordability
adjustedAffordability
sdiPct
tier
tierThresholds
slopeBucket
haircutPct
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
keyFormulas
rafMonitoring {
...FateGuideExplainerRafMonitoringDtoFragment
}
}
createdAt
updatedAt
}
}
Variables
{
"applicationId": "4",
"type": "PRESCREENING"
}
Response
{
"data": {
"latestFateGuideScoresByApplicationId": {
"id": 4,
"_id": 4,
"application_id": 4,
"application": ApplicationEntityGraphQL,
"customer_id": "xyz789",
"crb_transaction_id": 4,
"mobile_analysis_id": "xyz789",
"document_id": "4",
"crb_score": "abc123",
"crb_past_default_record": 987.65,
"customer_age": 123,
"big_loan_default": "abc123",
"model_type": "abc123",
"fate_guide_message": "abc123",
"requires_recheck": false,
"sale_agent_id": "abc123",
"available_plans": ["xyz789"],
"version": 123,
"sku": "abc123",
"type": "abc123",
"active": false,
"devicePrice": 123.45,
"durationMonths": 123,
"age": 987.65,
"loanHistory": [FateGuideRuntimeLoanRecordDto],
"signals": FateGuideRuntimeSignalsDto,
"tier": "abc123",
"status": "xyz789",
"rejectionReason": "xyz789",
"statementLength": 987.65,
"minimumRequired": 987.65,
"sdiPct": 987.65,
"maxMonthlyInstallment": 987.65,
"maxCashPrice": 987.65,
"maxCashPriceHigh": 987.65,
"maxCashPriceMosaver": 987.65,
"productBand": "abc123",
"canonicalProductBand": "abc123",
"depositLevel": "abc123",
"affordabilitySource": "xyz789",
"affordabilityValue": 987.65,
"adjustedAffordability": 123.45,
"crbInferredAffordability": 987.65,
"recommendation": "xyz789",
"slopeBucket": "xyz789",
"slopeHaircutPct": 987.65,
"bettingRatio": 987.65,
"p2pShare": 987.65,
"crbPositiveScore": 123.45,
"cov": 987.65,
"productBands": {},
"deviceAssessment": {},
"customerName": "abc123",
"assessedAt": "abc123",
"modelVersion": "abc123",
"formulas": FateGuideRuntimeFormulasDto,
"explanation": FateGuideRuntimeExplanationDto,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
listingsBySeller
Response
Returns [SellerCatalogObjectType!]!
Arguments
| Name | Description |
|---|---|
sellerId - ID!
|
Example
Query
query listingsBySeller($sellerId: ID!) {
listingsBySeller(sellerId: $sellerId) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"sellerId": 4}
Response
{
"data": {
"listingsBySeller": [
{
"seller_catalog_id": "4",
"seller_id": "xyz789",
"sku_id": "xyz789",
"cost_price": 987.65,
"retail_price": 123.45,
"currency": "xyz789",
"stock_on_hand": 987,
"reserved_stock": 987,
"is_active": false,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 123,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
]
}
}
listingsBySku
Response
Returns [SellerCatalogObjectType!]!
Arguments
| Name | Description |
|---|---|
skuId - ID!
|
Example
Query
query listingsBySku($skuId: ID!) {
listingsBySku(skuId: $skuId) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"skuId": 4}
Response
{
"data": {
"listingsBySku": [
{
"seller_catalog_id": "4",
"seller_id": "abc123",
"sku_id": "xyz789",
"cost_price": 987.65,
"retail_price": 987.65,
"currency": "xyz789",
"stock_on_hand": 123,
"reserved_stock": 987,
"is_active": false,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 987,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
]
}
}
listingsWithLowStock
Response
Returns [SellerCatalogObjectType!]!
Arguments
| Name | Description |
|---|---|
threshold - Float!
|
Default = 5 |
Example
Query
query listingsWithLowStock($threshold: Float!) {
listingsWithLowStock(threshold: $threshold) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"threshold": 5}
Response
{
"data": {
"listingsWithLowStock": [
{
"seller_catalog_id": "4",
"seller_id": "abc123",
"sku_id": "abc123",
"cost_price": 123.45,
"retail_price": 123.45,
"currency": "abc123",
"stock_on_hand": 123,
"reserved_stock": 123,
"is_active": true,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 123,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
]
}
}
livenessCheckTransaction
Description
Get a single liveness check transaction by ID
Response
Returns a LivenessCheckTransactionDto
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query livenessCheckTransaction($id: ID!) {
livenessCheckTransaction(id: $id) {
id
job_id
target_id
link
provider
status
success
error_message
image_links {
id_card_back
id_card_image
selfie_image
}
results {
document_check
liveness_check
register_selfie
verify_document
selfie_to_id_card_compare
human_review_document_check
human_review_liveness_check
}
info {
first_name
last_name
middle_name
gender
dob
country
id_number
id_type
}
metadata
createdAt
updatedAt
}
}
Variables
{"id": 4}
Response
{
"data": {
"livenessCheckTransaction": {
"id": "4",
"job_id": "xyz789",
"target_id": "xyz789",
"link": "abc123",
"provider": "SUMSUB",
"status": "PENDING",
"success": true,
"error_message": "abc123",
"image_links": LivenessImageLinksType,
"results": LivenessResultsType,
"info": LivenessInfoType,
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
livenessCheckTransactionByFilters
Description
Get a single liveness check transaction by filters
Response
Returns a LivenessCheckTransactionDto
Arguments
| Name | Description |
|---|---|
filters - LivenessCheckTransactionFilterInput!
|
Example
Query
query livenessCheckTransactionByFilters($filters: LivenessCheckTransactionFilterInput!) {
livenessCheckTransactionByFilters(filters: $filters) {
id
job_id
target_id
link
provider
status
success
error_message
image_links {
id_card_back
id_card_image
selfie_image
}
results {
document_check
liveness_check
register_selfie
verify_document
selfie_to_id_card_compare
human_review_document_check
human_review_liveness_check
}
info {
first_name
last_name
middle_name
gender
dob
country
id_number
id_type
}
metadata
createdAt
updatedAt
}
}
Variables
{"filters": LivenessCheckTransactionFilterInput}
Response
{
"data": {
"livenessCheckTransactionByFilters": {
"id": "4",
"job_id": "abc123",
"target_id": "xyz789",
"link": "abc123",
"provider": "SUMSUB",
"status": "PENDING",
"success": false,
"error_message": "xyz789",
"image_links": LivenessImageLinksType,
"results": LivenessResultsType,
"info": LivenessInfoType,
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
livenessCheckTransactionCount
Description
Get count of liveness check transactions with optional filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - LivenessCheckTransactionFilterInput
|
Example
Query
query livenessCheckTransactionCount($filters: LivenessCheckTransactionFilterInput) {
livenessCheckTransactionCount(filters: $filters)
}
Variables
{"filters": LivenessCheckTransactionFilterInput}
Response
{"data": {"livenessCheckTransactionCount": 123.45}}
livenessCheckTransactionsCursor
Description
Get paginated liveness check transactions using cursor-based pagination
Response
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - LivenessCheckTransactionFilterInput
|
|
regexFilters - LivenessCheckTransactionFilterInput
|
Example
Query
query livenessCheckTransactionsCursor(
$pagination: CursorPaginationInputType,
$filters: LivenessCheckTransactionFilterInput,
$regexFilters: LivenessCheckTransactionFilterInput
) {
livenessCheckTransactionsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
job_id
target_id
link
provider
status
success
error_message
image_links {
...LivenessImageLinksTypeFragment
}
results {
...LivenessResultsTypeFragment
}
info {
...LivenessInfoTypeFragment
}
metadata
createdAt
updatedAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": LivenessCheckTransactionFilterInput,
"regexFilters": LivenessCheckTransactionFilterInput
}
Response
{
"data": {
"livenessCheckTransactionsCursor": {
"data": [LivenessCheckTransactionDto],
"pagination": CursorPaginationMetadata
}
}
}
livenessCheckTransactionsOffset
Description
Get paginated liveness check transactions using offset-based pagination
Response
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - LivenessCheckTransactionFilterInput
|
|
regexFilters - LivenessCheckTransactionFilterInput
|
Example
Query
query livenessCheckTransactionsOffset(
$pagination: OffsetPaginationInputType,
$filters: LivenessCheckTransactionFilterInput,
$regexFilters: LivenessCheckTransactionFilterInput
) {
livenessCheckTransactionsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
job_id
target_id
link
provider
status
success
error_message
image_links {
...LivenessImageLinksTypeFragment
}
results {
...LivenessResultsTypeFragment
}
info {
...LivenessInfoTypeFragment
}
metadata
createdAt
updatedAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": LivenessCheckTransactionFilterInput,
"regexFilters": LivenessCheckTransactionFilterInput
}
Response
{
"data": {
"livenessCheckTransactionsOffset": {
"data": [LivenessCheckTransactionDto],
"metadata": OffsetPaginationMetadata
}
}
}
loan_module
Description
Access loan module operations
Response
Returns a LoanModuleNamespace!
Example
Query
query loan_module {
loan_module {
loanContracts {
loanContract {
...LoanContractDtoFragment
}
loanContractBySaleId {
...LoanContractDtoFragment
}
loanContractsByCustomerId {
...LoanContractDtoFragment
}
loanContractsByStatus {
...LoanContractDtoFragment
}
loanContractsByRepaymentType {
...LoanContractDtoFragment
}
activeLoanContracts {
...LoanContractDtoFragment
}
allLoanContracts {
...LoanContractDtoFragment
}
loanContractsWithOffsetPagination {
...OffsetPaginatedLoanContractsFragment
}
loanContractsCursor {
...CursorPaginatedLoanContractsFragment
}
loanContractsCount
createLoanContract {
...LoanContractDtoFragment
}
updateLoanContract {
...LoanContractDtoFragment
}
deleteLoanContract
deleteManyLoanContracts
markLoanContractAsPaidOff {
...LoanContractDtoFragment
}
markLoanContractAsWriteOff {
...LoanContractDtoFragment
}
disburseLoanContract {
...LoanContractDtoFragment
}
earlySettlementQuote {
...EarlySettlementQuoteTypeFragment
}
applyEarlySettlement {
...ApplyEarlySettlementResultTypeFragment
}
triggerContractAging {
...AgingResultFragment
}
triggerCustomerAging {
...AgingResultFragment
}
}
loanLedger {
loanLedgerEntry {
...LoanLedgerDtoFragment
}
allLoanLedgerEntries {
...LoanLedgerDtoFragment
}
loanLedgerWithOffsetPagination {
...OffsetPaginatedLoanLedgerFragment
}
loanLedgerCursor {
...CursorPaginatedLoanLedgerFragment
}
loanLedgerCount
createLoanLedgerEntry {
...LoanLedgerDtoFragment
}
updateLoanLedgerEntry {
...LoanLedgerDtoFragment
}
deleteLoanLedgerEntry
paymentStatement {
...OffsetPaginatedPaymentStatementFragment
}
}
paymentAllocations {
paymentAllocation {
...PaymentAllocationDtoFragment
}
allPaymentAllocations {
...PaymentAllocationDtoFragment
}
paymentAllocationsWithOffsetPagination {
...OffsetPaginatedPaymentAllocationsFragment
}
paymentAllocationsCount
createPaymentAllocation {
...PaymentAllocationDtoFragment
}
updatePaymentAllocation {
...PaymentAllocationDtoFragment
}
deletePaymentAllocation
moveLoanPayments {
...MoveLoanPaymentsResultTypeFragment
}
}
loanInstallments {
loanInstallment {
...LoanInstallmentDtoFragment
}
allLoanInstallments {
...LoanInstallmentDtoFragment
}
loanInstallmentsWithOffsetPagination {
...OffsetPaginatedLoanInstallmentsFragment
}
loanInstallmentsCursor {
...CursorPaginatedLoanInstallmentsFragment
}
loanInstallmentsCount
createLoanInstallment {
...LoanInstallmentDtoFragment
}
updateLoanInstallment {
...LoanInstallmentDtoFragment
}
deleteLoanInstallment
}
loanDelinquency {
loanDelinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
allLoanDelinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
loanDelinquencyTrackingWithOffsetPagination {
...OffsetPaginatedLoanDelinquencyTrackingFragment
}
loanDelinquencyTrackingCount
createLoanDelinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
updateLoanDelinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
deleteLoanDelinquencyTracking
}
loanOverrides {
loanOverride {
...LoanOverrideDtoFragment
}
allLoanOverrides {
...LoanOverrideDtoFragment
}
loanOverridesWithOffsetPagination {
...OffsetPaginatedLoanOverridesFragment
}
loanOverridesCount
createLoanOverride {
...LoanOverrideDtoFragment
}
updateLoanOverride {
...LoanOverrideDtoFragment
}
deleteLoanOverride
}
accountStatus {
calculateAccountStatus {
...StatusCalculationResultFragment
}
}
loanDashboard {
summary {
...LoanDashboardSummaryFragment
}
}
}
}
Response
{
"data": {
"loan_module": {
"loanContracts": LoanContractsNamespace,
"loanLedger": LoanLedgerNamespace,
"paymentAllocations": PaymentAllocationsNamespace,
"loanInstallments": LoanInstallmentsNamespace,
"loanDelinquency": LoanDelinquencyNamespace,
"loanOverrides": LoanOverridesNamespace,
"accountStatus": AccountStatusNamespace,
"loanDashboard": LoanDashboardNamespace
}
}
}
locations
Description
Get the location hierarchy and allowed delivery zones for a country
Response
Returns a LocationsConfigType!
Arguments
| Name | Description |
|---|---|
country - String!
|
ISO 3166-1 alpha-2 country code (e.g. KE). Default = "KE" |
Example
Query
query locations($country: String!) {
locations(country: $country) {
location
allowedLocations
}
}
Variables
{"country": "KE"}
Response
{"data": {"locations": {"location": {}, "allowedLocations": {}}}}
mediaAsset
Description
Get a media asset by ID
Response
Returns a MediaAssetDto
Arguments
| Name | Description |
|---|---|
id - String!
|
Example
Query
query mediaAsset($id: String!) {
mediaAsset(id: $id) {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
}
Variables
{"id": "xyz789"}
Response
{
"data": {
"mediaAsset": {
"_id": 4,
"domain": "AUDIT",
"type": "SELFIE",
"target": "xyz789",
"target_id": "xyz789",
"password": "abc123",
"url": "xyz789",
"name": "xyz789",
"content_type": "xyz789",
"storage_provider": "S3",
"raw": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
mediaAssets
Description
Get media assets by domain, target, and target ID
Response
Returns [MediaAssetDto!]!
Arguments
| Name | Description |
|---|---|
domain - MediaAssetsDomain!
|
|
target - String!
|
|
targetId - String!
|
Example
Query
query mediaAssets(
$domain: MediaAssetsDomain!,
$target: String!,
$targetId: String!
) {
mediaAssets(
domain: $domain,
target: $target,
targetId: $targetId
) {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
}
Variables
{
"domain": "AUDIT",
"target": "xyz789",
"targetId": "abc123"
}
Response
{
"data": {
"mediaAssets": [
{
"_id": "4",
"domain": "AUDIT",
"type": "SELFIE",
"target": "abc123",
"target_id": "abc123",
"password": "abc123",
"url": "abc123",
"name": "abc123",
"content_type": "abc123",
"storage_provider": "S3",
"raw": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
]
}
}
mediaAssetsCursor
Description
Get media assets with cursor pagination
Response
Returns a CursorPaginatedMediaAssets!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - MediaAssetFilterInput
|
|
regexFilters - MediaAssetFilterInput
|
Example
Query
query mediaAssetsCursor(
$pagination: CursorPaginationInputType!,
$filters: MediaAssetFilterInput,
$regexFilters: MediaAssetFilterInput
) {
mediaAssetsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": MediaAssetFilterInput,
"regexFilters": MediaAssetFilterInput
}
Response
{
"data": {
"mediaAssetsCursor": {
"data": [MediaAssetDto],
"pagination": CursorPaginationMetadata
}
}
}
mediaAssetsOffset
Description
Get media assets with offset pagination
Response
Returns an OffsetPaginatedMediaAssets!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - MediaAssetFilterInput
|
|
regexFilters - MediaAssetFilterInput
|
Example
Query
query mediaAssetsOffset(
$pagination: OffsetPaginationInputType,
$filters: MediaAssetFilterInput,
$regexFilters: MediaAssetFilterInput
) {
mediaAssetsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": MediaAssetFilterInput,
"regexFilters": MediaAssetFilterInput
}
Response
{
"data": {
"mediaAssetsOffset": {
"data": [MediaAssetDto],
"metadata": OffsetPaginationMetadata
}
}
}
moneyStatementAnalysesCursor
Description
Get paginated money statement analyses using cursor-based pagination
Response
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - MoneyStatementAnalysisFilterInput
|
|
regexFilters - MoneyStatementAnalysisFilterInput
|
Example
Query
query moneyStatementAnalysesCursor(
$pagination: CursorPaginationInputType,
$filters: MoneyStatementAnalysisFilterInput,
$regexFilters: MoneyStatementAnalysisFilterInput
) {
moneyStatementAnalysesCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
target_id
target
provider_reference
document_id
status
type
provider
name
phone_number
secondary_phone_number
email
duration
statement_period
agent_deposit
airtime_highest
internet_bundle_highest
persons_received_from_total
banks_received
mfis_received
mobile_lenders_received
healthcare_received
saccos_received
insurance_received
betting_received
others_received
airtime_total
internet_bundle_total
total_paid_in
total_paid_in_average
total_others
affordability
average_income
twelve_months_loan_price
gap_analysis {
...GapAnalysisResultGraphQLFragment
}
statement_source
income
airtime_category
income_paid_in
income_cover
jsonData
raw
createdAt
updatedAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": MoneyStatementAnalysisFilterInput,
"regexFilters": MoneyStatementAnalysisFilterInput
}
Response
{
"data": {
"moneyStatementAnalysesCursor": {
"data": [MoneyStatementAnalysisDto],
"pagination": CursorPaginationMetadata
}
}
}
moneyStatementAnalysesOffset
Description
Get paginated money statement analyses using offset-based pagination
Response
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - MoneyStatementAnalysisFilterInput
|
|
regexFilters - MoneyStatementAnalysisFilterInput
|
Example
Query
query moneyStatementAnalysesOffset(
$pagination: OffsetPaginationInputType,
$filters: MoneyStatementAnalysisFilterInput,
$regexFilters: MoneyStatementAnalysisFilterInput
) {
moneyStatementAnalysesOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
target_id
target
provider_reference
document_id
status
type
provider
name
phone_number
secondary_phone_number
email
duration
statement_period
agent_deposit
airtime_highest
internet_bundle_highest
persons_received_from_total
banks_received
mfis_received
mobile_lenders_received
healthcare_received
saccos_received
insurance_received
betting_received
others_received
airtime_total
internet_bundle_total
total_paid_in
total_paid_in_average
total_others
affordability
average_income
twelve_months_loan_price
gap_analysis {
...GapAnalysisResultGraphQLFragment
}
statement_source
income
airtime_category
income_paid_in
income_cover
jsonData
raw
createdAt
updatedAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": MoneyStatementAnalysisFilterInput,
"regexFilters": MoneyStatementAnalysisFilterInput
}
Response
{
"data": {
"moneyStatementAnalysesOffset": {
"data": [MoneyStatementAnalysisDto],
"metadata": OffsetPaginationMetadata
}
}
}
moneyStatementAnalysis
Description
Get a single money statement analysis by ID
Response
Returns a MoneyStatementAnalysisDto
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query moneyStatementAnalysis($id: ID!) {
moneyStatementAnalysis(id: $id) {
id
target_id
target
provider_reference
document_id
status
type
provider
name
phone_number
secondary_phone_number
email
duration
statement_period
agent_deposit
airtime_highest
internet_bundle_highest
persons_received_from_total
banks_received
mfis_received
mobile_lenders_received
healthcare_received
saccos_received
insurance_received
betting_received
others_received
airtime_total
internet_bundle_total
total_paid_in
total_paid_in_average
total_others
affordability
average_income
twelve_months_loan_price
gap_analysis {
pass
status
slope
average_disposable
month_5_disposable
month_6_disposable
standard_deviation
coefficient_of_variation
criteria {
...GapAnalysisCriteriaGraphQLFragment
}
monthly_data {
...GapAnalysisMonthlyDataGraphQLFragment
}
}
statement_source
income
airtime_category
income_paid_in
income_cover
jsonData
raw
createdAt
updatedAt
}
}
Variables
{"id": 4}
Response
{
"data": {
"moneyStatementAnalysis": {
"id": "4",
"target_id": "abc123",
"target": "LEAD",
"provider_reference": "xyz789",
"document_id": "xyz789",
"status": "UNKNOWN",
"type": "MPESA",
"provider": "SPINMOBILE",
"name": "xyz789",
"phone_number": "xyz789",
"secondary_phone_number": "abc123",
"email": "xyz789",
"duration": 123,
"statement_period": "xyz789",
"agent_deposit": 123.45,
"airtime_highest": 987.65,
"internet_bundle_highest": 987.65,
"persons_received_from_total": 123.45,
"banks_received": 987.65,
"mfis_received": 123.45,
"mobile_lenders_received": 987.65,
"healthcare_received": 987.65,
"saccos_received": 987.65,
"insurance_received": 123.45,
"betting_received": 987.65,
"others_received": 123.45,
"airtime_total": 123.45,
"internet_bundle_total": 123.45,
"total_paid_in": 987.65,
"total_paid_in_average": 987.65,
"total_others": 987.65,
"affordability": 123.45,
"average_income": 123.45,
"twelve_months_loan_price": 987.65,
"gap_analysis": GapAnalysisResultGraphQL,
"statement_source": "WEBHOOK",
"income": 123.45,
"airtime_category": "xyz789",
"income_paid_in": 987.65,
"income_cover": "xyz789",
"jsonData": {},
"raw": "xyz789",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
moneyStatementAnalysisByFilters
Description
Get a single money statement analysis by filters
Response
Returns a MoneyStatementAnalysisDto
Arguments
| Name | Description |
|---|---|
filters - MoneyStatementAnalysisFilterInput!
|
Example
Query
query moneyStatementAnalysisByFilters($filters: MoneyStatementAnalysisFilterInput!) {
moneyStatementAnalysisByFilters(filters: $filters) {
id
target_id
target
provider_reference
document_id
status
type
provider
name
phone_number
secondary_phone_number
email
duration
statement_period
agent_deposit
airtime_highest
internet_bundle_highest
persons_received_from_total
banks_received
mfis_received
mobile_lenders_received
healthcare_received
saccos_received
insurance_received
betting_received
others_received
airtime_total
internet_bundle_total
total_paid_in
total_paid_in_average
total_others
affordability
average_income
twelve_months_loan_price
gap_analysis {
pass
status
slope
average_disposable
month_5_disposable
month_6_disposable
standard_deviation
coefficient_of_variation
criteria {
...GapAnalysisCriteriaGraphQLFragment
}
monthly_data {
...GapAnalysisMonthlyDataGraphQLFragment
}
}
statement_source
income
airtime_category
income_paid_in
income_cover
jsonData
raw
createdAt
updatedAt
}
}
Variables
{"filters": MoneyStatementAnalysisFilterInput}
Response
{
"data": {
"moneyStatementAnalysisByFilters": {
"id": "4",
"target_id": "abc123",
"target": "LEAD",
"provider_reference": "xyz789",
"document_id": "xyz789",
"status": "UNKNOWN",
"type": "MPESA",
"provider": "SPINMOBILE",
"name": "abc123",
"phone_number": "abc123",
"secondary_phone_number": "abc123",
"email": "abc123",
"duration": 123,
"statement_period": "abc123",
"agent_deposit": 123.45,
"airtime_highest": 123.45,
"internet_bundle_highest": 123.45,
"persons_received_from_total": 987.65,
"banks_received": 987.65,
"mfis_received": 987.65,
"mobile_lenders_received": 987.65,
"healthcare_received": 123.45,
"saccos_received": 987.65,
"insurance_received": 987.65,
"betting_received": 123.45,
"others_received": 987.65,
"airtime_total": 123.45,
"internet_bundle_total": 987.65,
"total_paid_in": 123.45,
"total_paid_in_average": 123.45,
"total_others": 123.45,
"affordability": 987.65,
"average_income": 123.45,
"twelve_months_loan_price": 987.65,
"gap_analysis": GapAnalysisResultGraphQL,
"statement_source": "WEBHOOK",
"income": 987.65,
"airtime_category": "xyz789",
"income_paid_in": 987.65,
"income_cover": "xyz789",
"jsonData": {},
"raw": "xyz789",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
moneyStatementAnalysisCount
Description
Get count of money statement analyses with optional filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - MoneyStatementAnalysisFilterInput
|
Example
Query
query moneyStatementAnalysisCount($filters: MoneyStatementAnalysisFilterInput) {
moneyStatementAnalysisCount(filters: $filters)
}
Variables
{"filters": MoneyStatementAnalysisFilterInput}
Response
{"data": {"moneyStatementAnalysisCount": 987.65}}
onboardingAvailableDevicesByApplicationId
Description
Get available devices based on the latest active fate guide for an application
Response
Returns an OnboardingAvailableDevicesResponse!
Arguments
| Name | Description |
|---|---|
input - OnboardingAvailableDevicesInput!
|
Example
Query
query onboardingAvailableDevicesByApplicationId($input: OnboardingAvailableDevicesInput!) {
onboardingAvailableDevicesByApplicationId(input: $input) {
message
data {
fateGuide {
...FateGuideScoresTypeFragment
}
products {
...SellerCatalogObjectTypeFragment
}
preferredProduct {
...SellerCatalogObjectTypeFragment
}
productFilter {
...OnboardingProductFilterTypeFragment
}
pagination {
...OnboardingPaginationMetadataTypeFragment
}
availablePlans {
...PricingCalculationTypeFragment
}
pricePlans {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"input": OnboardingAvailableDevicesInput}
Response
{
"data": {
"onboardingAvailableDevicesByApplicationId": {
"message": "xyz789",
"data": AvailableDevicesResultGraphQL
}
}
}
onboardingAvailableDevicesByFateGuideId
Description
Get available devices using an existing fate guide result
Response
Returns an OnboardingAvailableDevicesResponse!
Arguments
| Name | Description |
|---|---|
input - OnboardingAvailableDevicesInput!
|
Example
Query
query onboardingAvailableDevicesByFateGuideId($input: OnboardingAvailableDevicesInput!) {
onboardingAvailableDevicesByFateGuideId(input: $input) {
message
data {
fateGuide {
...FateGuideScoresTypeFragment
}
products {
...SellerCatalogObjectTypeFragment
}
preferredProduct {
...SellerCatalogObjectTypeFragment
}
productFilter {
...OnboardingProductFilterTypeFragment
}
pagination {
...OnboardingPaginationMetadataTypeFragment
}
availablePlans {
...PricingCalculationTypeFragment
}
pricePlans {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"input": OnboardingAvailableDevicesInput}
Response
{
"data": {
"onboardingAvailableDevicesByFateGuideId": {
"message": "abc123",
"data": AvailableDevicesResultGraphQL
}
}
}
order
Response
Returns an OrderObjectType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query order($id: ID!) {
order(id: $id) {
order_id
customer_id
order_status
payment_status
shipping_address {
street
city
state
postal_code
country
geo {
...OrderGeoFragment
}
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
orderItems {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
deliveries {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
sales {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
deliveryCalls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"order": {
"order_id": "4",
"customer_id": "4",
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "abc123",
"sub_total": 123.45,
"total_discount": 987.65,
"delivery_fee": 123.45,
"service_fee": 123.45,
"tax_amount": 987.65,
"total_amount": 123.45,
"application_id": "xyz789",
"sale_agent_id": "xyz789",
"submitting_agent_id": "xyz789",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
}
}
orderByFilters
Response
Returns an OrderObjectType
Arguments
| Name | Description |
|---|---|
filters - OrderFilterInput!
|
Example
Query
query orderByFilters($filters: OrderFilterInput!) {
orderByFilters(filters: $filters) {
order_id
customer_id
order_status
payment_status
shipping_address {
street
city
state
postal_code
country
geo {
...OrderGeoFragment
}
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
orderItems {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
deliveries {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
sales {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
deliveryCalls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
}
}
Variables
{"filters": OrderFilterInput}
Response
{
"data": {
"orderByFilters": {
"order_id": "4",
"customer_id": 4,
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "xyz789",
"sub_total": 987.65,
"total_discount": 987.65,
"delivery_fee": 987.65,
"service_fee": 123.45,
"tax_amount": 987.65,
"total_amount": 987.65,
"application_id": "xyz789",
"sale_agent_id": "xyz789",
"submitting_agent_id": "abc123",
"manual_override": true,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
}
}
orderItem
Response
Returns an OrderItemObjectType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query orderItem($id: ID!) {
orderItem(id: $id) {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
delivery_items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
inventory_allocations {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
...OrderItemObjectTypeFragment
}
inventory {
...InventoryObjectTypeFragment
}
created_at
updated_at
}
inventory_allocation {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
...OrderItemObjectTypeFragment
}
inventory {
...InventoryObjectTypeFragment
}
created_at
updated_at
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"orderItem": {
"order_item_id": "4",
"order_id": "4",
"seller_id": "4",
"item_type": "PRODUCT",
"catalog_id": "4",
"quantity": 123.45,
"unit_price": 123.45,
"discount_amount": 987.65,
"adjustments": {},
"subtotal": 123.45,
"purchase_type": "CASH",
"status": "abc123",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sellerCatalog": SellerCatalogObjectType,
"order": OrderObjectType,
"delivery_items": [DeliveryItemObjectType],
"inventory_allocations": [
InventoryAllocationObjectType
],
"inventory_allocation": InventoryAllocationObjectType
}
}
}
orderItems
Response
Returns [OrderItemObjectType!]
Arguments
| Name | Description |
|---|---|
filters - OrderItemFilterInput
|
Example
Query
query orderItems($filters: OrderItemFilterInput) {
orderItems(filters: $filters) {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
delivery_items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
inventory_allocations {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
...OrderItemObjectTypeFragment
}
inventory {
...InventoryObjectTypeFragment
}
created_at
updated_at
}
inventory_allocation {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
...OrderItemObjectTypeFragment
}
inventory {
...InventoryObjectTypeFragment
}
created_at
updated_at
}
}
}
Variables
{"filters": OrderItemFilterInput}
Response
{
"data": {
"orderItems": [
{
"order_item_id": 4,
"order_id": 4,
"seller_id": "4",
"item_type": "PRODUCT",
"catalog_id": "4",
"quantity": 123.45,
"unit_price": 123.45,
"discount_amount": 123.45,
"adjustments": {},
"subtotal": 987.65,
"purchase_type": "CASH",
"status": "xyz789",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sellerCatalog": SellerCatalogObjectType,
"order": OrderObjectType,
"delivery_items": [DeliveryItemObjectType],
"inventory_allocations": [
InventoryAllocationObjectType
],
"inventory_allocation": InventoryAllocationObjectType
}
]
}
}
orderItemsCursor
Response
Returns a CursorsPaginatedOrderItems!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - OrderItemFilterInput
|
|
regexFilters - OrderItemFilterInput
|
Example
Query
query orderItemsCursor(
$pagination: CursorPaginationInputType,
$filters: OrderItemFilterInput,
$regexFilters: OrderItemFilterInput
) {
orderItemsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": OrderItemFilterInput,
"regexFilters": OrderItemFilterInput
}
Response
{
"data": {
"orderItemsCursor": {
"data": [OrderItemObjectType],
"pagination": CursorPaginationMetadata
}
}
}
orderItemsOffset
Response
Returns an OffsetPaginatedOrderItems!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - OrderItemFilterInput
|
|
regexFilters - OrderItemFilterInput
|
Example
Query
query orderItemsOffset(
$pagination: OffsetPaginationInputType,
$filters: OrderItemFilterInput,
$regexFilters: OrderItemFilterInput
) {
orderItemsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": OrderItemFilterInput,
"regexFilters": OrderItemFilterInput
}
Response
{
"data": {
"orderItemsOffset": {
"data": [OrderItemObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
orders
Response
Returns [OrderObjectType!]
Arguments
| Name | Description |
|---|---|
filters - OrderFilterInput
|
Example
Query
query orders($filters: OrderFilterInput) {
orders(filters: $filters) {
order_id
customer_id
order_status
payment_status
shipping_address {
street
city
state
postal_code
country
geo {
...OrderGeoFragment
}
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
orderItems {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
deliveries {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
sales {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
deliveryCalls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
}
}
Variables
{"filters": OrderFilterInput}
Response
{
"data": {
"orders": [
{
"order_id": "4",
"customer_id": 4,
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "abc123",
"sub_total": 987.65,
"total_discount": 123.45,
"delivery_fee": 987.65,
"service_fee": 123.45,
"tax_amount": 123.45,
"total_amount": 987.65,
"application_id": "abc123",
"sale_agent_id": "xyz789",
"submitting_agent_id": "abc123",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
]
}
}
ordersCursor
Response
Returns a CursorsPaginatedOrders
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - OrderFilterInput
|
|
regexFilters - OrderFilterInput
|
Example
Query
query ordersCursor(
$pagination: CursorPaginationInputType,
$filters: OrderFilterInput,
$regexFilters: OrderFilterInput
) {
ordersCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": OrderFilterInput,
"regexFilters": OrderFilterInput
}
Response
{
"data": {
"ordersCursor": {
"data": [OrderObjectType],
"pagination": CursorPaginationMetadata
}
}
}
ordersNeedingCollection
Response
Returns [OrderObjectType!]!
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
query ordersNeedingCollection($applicationId: ID!) {
ordersNeedingCollection(applicationId: $applicationId) {
order_id
customer_id
order_status
payment_status
shipping_address {
street
city
state
postal_code
country
geo {
...OrderGeoFragment
}
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
orderItems {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
deliveries {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
sales {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
deliveryCalls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
}
}
Variables
{"applicationId": "4"}
Response
{
"data": {
"ordersNeedingCollection": [
{
"order_id": "4",
"customer_id": 4,
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "abc123",
"sub_total": 987.65,
"total_discount": 123.45,
"delivery_fee": 123.45,
"service_fee": 987.65,
"tax_amount": 123.45,
"total_amount": 987.65,
"application_id": "abc123",
"sale_agent_id": "xyz789",
"submitting_agent_id": "xyz789",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
]
}
}
ordersOffset
Response
Returns an OffsetPaginatedOrders!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - OrderFilterInput
|
|
regexFilters - OrderFilterInput
|
Example
Query
query ordersOffset(
$pagination: OffsetPaginationInputType,
$filters: OrderFilterInput,
$regexFilters: OrderFilterInput
) {
ordersOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": OrderFilterInput,
"regexFilters": OrderFilterInput
}
Response
{
"data": {
"ordersOffset": {
"data": [OrderObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
overdueRepairs
Response
Returns [RepairObjectType!]!
Example
Query
query overdueRepairs {
overdueRepairs {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Response
{
"data": {
"overdueRepairs": [
{
"repair_id": 4,
"repair_display_id": "xyz789",
"requires_technician": true,
"inventory_id": "xyz789",
"customer_id": "xyz789",
"original_sale_id": "xyz789",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "xyz789",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
partner_module
Description
Access partner module operations
Response
Returns a PartnerModuleNamespace!
Example
Query
query partner_module {
partner_module {
partnerProfile {
createPartnerProfile {
...PartnerProfileObjectTypeFragment
}
updatePartnerProfile {
...PartnerProfileObjectTypeFragment
}
updatePartnerStatus {
...PartnerProfileObjectTypeFragment
}
deletePartnerProfile
partnerProfile {
...PartnerProfileObjectTypeFragment
}
partnerProfileByFilters {
...PartnerProfileObjectTypeFragment
}
partnerProfiles {
...PartnerProfileObjectTypeFragment
}
directReports {
...PartnerProfileObjectTypeFragment
}
allDownlines {
...PartnerProfileObjectTypeFragment
}
ancestors {
...PartnerProfileObjectTypeFragment
}
parentPartner {
...PartnerProfileObjectTypeFragment
}
partnerExists
partnersProfileOffset {
...OffsetPaginatedPartnerProfilesFragment
}
partnersProfileCursor {
...CursorPaginatedPartnerProfilesFragment
}
}
cohort {
cohort {
...CohortObjectTypeFragment
}
cohortByCohortId {
...CohortObjectTypeFragment
}
cohortbyFilters {
...CohortObjectTypeFragment
}
checkCohortCapacity
checkCohortAvailableCapacity
cohortsOffset {
...OffsetPaginatedCohortsFragment
}
cohortsCursor {
...CursorPaginatedCohortsFragment
}
createCohort {
...CohortObjectTypeFragment
}
updateCohort {
...CohortObjectTypeFragment
}
updateCohortStatus {
...CohortObjectTypeFragment
}
addAgentToCohort {
...CohortObjectTypeFragment
}
removeAgentFromCohort {
...CohortObjectTypeFragment
}
assignTrainerToCohort {
...CohortObjectTypeFragment
}
removeTrainerFromCohort {
...CohortObjectTypeFragment
}
startCohort {
...CohortObjectTypeFragment
}
completeCohort {
...CohortObjectTypeFragment
}
cancelCohort {
...CohortObjectTypeFragment
}
graduateAgentFromCohort
deleteCohort
}
agentProfile {
agentProfile {
...AgentProfileObjectTypeFragment
}
agentProfileByUserId {
...AgentProfileObjectTypeFragment
}
agentProfileByFilters {
...AgentProfileObjectTypeFragment
}
agentProfiles {
...AgentProfileObjectTypeFragment
}
agentExists
agentProfilesOffset {
...OffsetPaginatedAgentProfilesFragment
}
agentProfilesCursor {
...CursorPaginatedAgentProfilesFragment
}
updateAgentProfile {
...AgentProfileObjectTypeFragment
}
updateAgentStatus {
...AgentProfileObjectTypeFragment
}
deleteAgent
}
internalStaff {
internalStaffProfile {
...InternalStaffProfileObjectTypeFragment
}
internalStaffProfileByFilters {
...InternalStaffProfileObjectTypeFragment
}
internalStaffProfileAll {
...InternalStaffProfileObjectTypeFragment
}
internalStaffOffset {
...OffsetPaginatedInternalStaffProfilesFragment
}
internalStaffCursor {
...CursorPaginatedInternalStaffProfilesFragment
}
staffExists
createInternalStaffProfile {
...InternalStaffProfileObjectTypeFragment
}
updateInternalStaffProfile {
...InternalStaffProfileObjectTypeFragment
}
assignStaffToShop {
...InternalStaffProfileObjectTypeFragment
}
assignStaffToRegion {
...InternalStaffProfileObjectTypeFragment
}
updateStaffAvailability {
...InternalStaffProfileObjectTypeFragment
}
removeStaffFromPartners {
...InternalStaffProfileObjectTypeFragment
}
removeStaffFromShop {
...InternalStaffProfileObjectTypeFragment
}
}
partnerKyc {
submitIndividualKYC {
...PartnerProfileObjectTypeFragment
}
submitOrganizationKYC {
...PartnerProfileObjectTypeFragment
}
submitStaffKYC {
...InternalStaffProfileObjectTypeFragment
}
reviewKYC {
...AgentProfileObjectTypeFragment
}
requestPartnerKYCResubmission {
...AgentProfileObjectTypeFragment
}
requestStaffKYCResubmission {
...AgentProfileObjectTypeFragment
}
partnersWithPendingKYC {
...AgentProfileObjectTypeFragment
}
partnersWithRejectedKYC {
...AgentProfileObjectTypeFragment
}
partnersWithIncompleteKYC {
...AgentProfileObjectTypeFragment
}
partnersWithApprovedKYC {
...AgentProfileObjectTypeFragment
}
getStaffKYC {
...InternalStaffProfileObjectTypeFragment
}
}
onlineAgent {
createOnlineAgent {
...PartnerProfileObjectTypeFragment
}
createSuperAgent {
...PartnerProfileObjectTypeFragment
}
updateOnlineAgent {
...PartnerProfileObjectTypeFragment
}
updateSuperAgent {
...PartnerProfileObjectTypeFragment
}
upgradeOnlineAgentToSuperAgent {
...PartnerProfileObjectTypeFragment
}
onlineAgentsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
superAgentsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
}
leadGeneration {
createLeadGeneration {
...PartnerProfileObjectTypeFragment
}
updateLeadGeneration {
...PartnerProfileObjectTypeFragment
}
leadGenerationOffset {
...OffsetPaginatedPartnerProfilesFragment
}
}
offlineAgent {
createOfflineAgent {
...PartnerProfileObjectTypeFragment
}
updateOfflineAgent {
...PartnerProfileObjectTypeFragment
}
offlineAgentsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
}
externalShop {
createExternalShopOwner {
...PartnerProfileObjectTypeFragment
}
createShopAttendant {
...PartnerProfileObjectTypeFragment
}
updateShopOwner {
...PartnerProfileObjectTypeFragment
}
updateShopAttendant {
...PartnerProfileObjectTypeFragment
}
}
dealer {
createDealerOwner {
...PartnerProfileObjectTypeFragment
}
createDealerAgent {
...PartnerProfileObjectTypeFragment
}
updateDealerOwner {
...PartnerProfileObjectTypeFragment
}
updateDealerAgent {
...PartnerProfileObjectTypeFragment
}
dealersOffset {
...OffsetPaginatedPartnerProfilesFragment
}
dealersCursor {
...CursorPaginatedPartnerProfilesFragment
}
}
telesalesAgent {
createTelesalesAgent {
...InternalStaffProfileObjectTypeFragment
}
updateTelesalesAgent {
...InternalStaffProfileObjectTypeFragment
}
telesalesAgent {
...InternalStaffProfileObjectTypeFragment
}
telesalesAgentByFilters {
...InternalStaffProfileObjectTypeFragment
}
telesalesAgents {
...InternalStaffProfileObjectTypeFragment
}
telesalesAgentsOffset {
...OffsetPaginatedInternalStaffProfilesFragment
}
telesalesAgentsCursor {
...CursorPaginatedInternalStaffProfilesFragment
}
}
telesalesParentAgent {
telesalesParentAgents {
...PartnerProfileObjectTypeFragment
}
telesalesParentAgentsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
telesalesParentAgentsCursor {
...CursorPaginatedPartnerProfilesFragment
}
telesalesAgentsByParent {
...InternalStaffProfileObjectTypeFragment
}
telesalesAgentsByParentOffset {
...OffsetPaginatedInternalStaffProfilesFragment
}
telesalesAgentsByParentCursor {
...CursorPaginatedInternalStaffProfilesFragment
}
createTelesalesParentAgent {
...PartnerProfileObjectTypeFragment
}
updateTelesalesParentAgent {
...PartnerProfileObjectTypeFragment
}
deleteTelesalesParentAgent
}
moShop {
createShopOwner {
...PartnerProfileObjectTypeFragment
}
createShopAttendant {
...InternalStaffProfileObjectTypeFragment
}
updateShopOwner {
...PartnerProfileObjectTypeFragment
}
updateShopAttendant {
...PartnerProfileObjectTypeFragment
}
shopsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
shopsCursor {
...CursorPaginatedPartnerProfilesFragment
}
}
partnerOwner {
createPartnerOwner {
...PartnerProfileObjectTypeFragment
}
createPartnerShopAttendant {
...PartnerProfileObjectTypeFragment
}
updatePartnerOwner {
...PartnerProfileObjectTypeFragment
}
updatePartnerShopAttendant {
...PartnerProfileObjectTypeFragment
}
createSellerForPartner {
...PartnerProfileObjectTypeFragment
}
partnerOwnersOffset {
...OffsetPaginatedPartnerProfilesFragment
}
}
trainer {
createTrainer {
...InternalStaffProfileObjectTypeFragment
}
updateTrainer {
...InternalStaffProfileObjectTypeFragment
}
trainersOffset {
...OffsetPaginatedInternalStaffProfilesFragment
}
}
sfm {
createSFM {
...InternalStaffProfileObjectTypeFragment
}
createShopManager {
...InternalStaffProfileObjectTypeFragment
}
createPartnerPromoter {
...InternalStaffProfileObjectTypeFragment
}
updateSFM {
...InternalStaffProfileObjectTypeFragment
}
updateShopManager {
...InternalStaffProfileObjectTypeFragment
}
updatePartnerPromoter {
...InternalStaffProfileObjectTypeFragment
}
removePromoterPartners {
...InternalStaffProfileObjectTypeFragment
}
transferPromoterPartners {
...InternalStaffProfileObjectTypeFragment
}
transferSfmPartners {
...InternalStaffProfileObjectTypeFragment
}
sfmStaffOffset {
...OffsetPaginatedInternalStaffProfilesFragment
}
}
retailer {
createRetailerOrganization {
...PartnerProfileObjectTypeFragment
}
updateRetailerOrganization {
...PartnerProfileObjectTypeFragment
}
createRetailerOutlet {
...PartnerProfileObjectTypeFragment
}
updateRetailerOutlet {
...PartnerProfileObjectTypeFragment
}
removeRetailerOutlet {
...PartnerProfileObjectTypeFragment
}
createRetailOutletStaff {
...InternalStaffProfileObjectTypeFragment
}
updateRetailOutletStaff {
...InternalStaffProfileObjectTypeFragment
}
assignStaffToOutlet {
...PartnerProfileObjectTypeFragment
}
transferStaffBetweenOutlets {
...PartnerProfileObjectTypeFragment
}
findRetailerOrganizationById {
...PartnerProfileObjectTypeFragment
}
findOutletsByRetailerId {
...RetailerOutletObjectTypeFragment
}
findOutletById {
...RetailerOutletObjectTypeFragment
}
retailerOrganizationsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
retailerOrganizationsCursor {
...CursorPaginatedPartnerProfilesFragment
}
}
agentPermissions {
agentTypePermissions {
...AgentTypePermissionsObjectTypeFragment
}
allAgentTypePermissions {
...AgentTypePermissionsObjectTypeFragment
}
permissionCatalog {
...PermissionCatalogTypeFragment
}
setAgentTypePermissions {
...AgentTypePermissionsObjectTypeFragment
}
resetAgentTypePermissions {
...AgentTypePermissionsObjectTypeFragment
}
deleteChildPermissions {
...AgentTypePermissionsObjectTypeFragment
}
}
}
}
Response
{
"data": {
"partner_module": {
"partnerProfile": PartnerProfileNamespace,
"cohort": CohortNamespace,
"agentProfile": AgentProfileNamespace,
"internalStaff": InternalStaffNamespace,
"partnerKyc": PartnerKycNamespace,
"onlineAgent": OnlineAgentNamespace,
"leadGeneration": LeadGenerationNamespace,
"offlineAgent": OfflineAgentNamespace,
"externalShop": ExternalShopNamespace,
"dealer": DealerNamespace,
"telesalesAgent": TelesalesAgentNamespace,
"telesalesParentAgent": TelesalesParentAgentNamespace,
"moShop": MoShopNamespace,
"partnerOwner": PartnerOwnerNamespace,
"trainer": TrainerNamespace,
"sfm": SfmNamespace,
"retailer": RetailerNamespace,
"agentPermissions": AgentPermissionsNamespace
}
}
}
payment_module
Description
Access payment module operations
Response
Returns a PaymentModuleNamespace!
Example
Query
query payment_module {
payment_module {
paymentOrchestrator {
collectMobileMoneyPayment {
...PaymentProviderResultTypeFragment
}
collectCardPayment {
...PaymentProviderResultTypeFragment
}
collectBankPayment {
...PaymentProviderResultTypeFragment
}
collectCryptoPayment {
...PaymentProviderResultTypeFragment
}
sendMobileMoneyPayment {
...PaymentProviderResultTypeFragment
}
sendCardPayment {
...PaymentProviderResultTypeFragment
}
sendBankPayment {
...PaymentProviderResultTypeFragment
}
sendCryptoPayment {
...PaymentProviderResultTypeFragment
}
}
payments {
createPayment {
...PaymentsEntityTypeFragment
}
createRawPayment {
...PaymentsEntityTypeFragment
}
getPaymentById {
...PaymentsEntityTypeFragment
}
payments {
...PaymentsEntityTypeFragment
}
paymentByFilters {
...PaymentsEntityTypeFragment
}
paymentsWithCursorPagination {
...CursorPaginatedPaymentsFragment
}
completePayment {
...PaymentsEntityTypeFragment
}
failPayment {
...PaymentsEntityTypeFragment
}
reversePayment {
...PaymentsEntityTypeFragment
}
updatePayment {
...PaymentsEntityTypeFragment
}
updateManyPayments
manuallyReconcilePayment {
...PaymentsEntityTypeFragment
}
revokePaymentByAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
undoPaymentRevocation {
...PaymentAdjustmentsEntityTypeFragment
}
allocatePaymentToRepairSale {
...RepairAllocationResultTypeFragment
}
correctCashSaleOverAllocations {
...CorrectCashSaleOverAllocationsResultTypeFragment
}
reallocateRepairSalesToOutstanding {
...ReallocateRepairSalesResultTypeFragment
}
deletePayment
deleteManyPayments
paymentCount
uploadMpesaBulkDump
}
paymentAdjustments {
createPaymentAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
paymentAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
paymentAdjustmentByFilters {
...PaymentAdjustmentsEntityTypeFragment
}
paymentAdjustments {
...PaymentAdjustmentsEntityTypeFragment
}
paymentAdjustmentsOffset {
...OffsetPaginatedPaymentAdjustmentsFragment
}
paymentAdjustmentsCursor {
...CursorPaginatedPaymentAdjustmentsFragment
}
updatePaymentAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
deletePaymentAdjustment
effectPaymentAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
revokePaymentAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
getTotalAdjustmentsByCustomer
paymentAdjustmentCount
uploadAdjustmentsBulkDump
}
}
}
Response
{
"data": {
"payment_module": {
"paymentOrchestrator": PaymentOrchestratorNamespace,
"payments": PaymentsNamespace,
"paymentAdjustments": PaymentAdjustmentsNamespace
}
}
}
pendingApprovalProducts
Response
Returns [ProductObjectType!]!
Example
Query
query pendingApprovalProducts {
pendingApprovalProducts {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Response
{
"data": {
"pendingApprovalProducts": [
{
"product_id": "4",
"name": "xyz789",
"slug": "xyz789",
"brand": "abc123",
"model": "xyz789",
"category_id": "abc123",
"category": CategoryObjectType,
"description": "xyz789",
"long_description": "xyz789",
"base_specifications": {},
"primary_image_url": "abc123",
"images": ["abc123"],
"video_url": "abc123",
"meta_title": "xyz789",
"meta_description": "abc123",
"keywords": ["xyz789"],
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
pendingRepairs
Response
Returns [RepairObjectType!]!
Example
Query
query pendingRepairs {
pendingRepairs {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Response
{
"data": {
"pendingRepairs": [
{
"repair_id": "4",
"repair_display_id": "abc123",
"requires_technician": true,
"inventory_id": "abc123",
"customer_id": "xyz789",
"original_sale_id": "xyz789",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "xyz789",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 987.65,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
phoneVerificationTransaction
Description
Get a single phone verification transaction by ID
Response
Returns a PhoneVerificationTransactionDto
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query phoneVerificationTransaction($id: ID!) {
phoneVerificationTransaction(id: $id) {
_id
status
country_iso
provider
phone_number
target_id
customer_name
transaction_id
failure_reason
registered
failed_at
completed_at
manual
check
record_status
createdAt
}
}
Variables
{"id": "4"}
Response
{
"data": {
"phoneVerificationTransaction": {
"_id": "4",
"status": true,
"country_iso": "abc123",
"provider": "MPESA",
"phone_number": "xyz789",
"target_id": "abc123",
"customer_name": "abc123",
"transaction_id": "abc123",
"failure_reason": "xyz789",
"registered": true,
"failed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"manual": true,
"check": "UNKNOWN",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
phoneVerificationTransactionByFilters
Description
Get a single phone verification transaction by filters
Response
Returns a PhoneVerificationTransactionDto
Arguments
| Name | Description |
|---|---|
filters - PhoneVerificationTransactionFilterInput!
|
Example
Query
query phoneVerificationTransactionByFilters($filters: PhoneVerificationTransactionFilterInput!) {
phoneVerificationTransactionByFilters(filters: $filters) {
_id
status
country_iso
provider
phone_number
target_id
customer_name
transaction_id
failure_reason
registered
failed_at
completed_at
manual
check
record_status
createdAt
}
}
Variables
{"filters": PhoneVerificationTransactionFilterInput}
Response
{
"data": {
"phoneVerificationTransactionByFilters": {
"_id": "4",
"status": true,
"country_iso": "xyz789",
"provider": "MPESA",
"phone_number": "abc123",
"target_id": "xyz789",
"customer_name": "xyz789",
"transaction_id": "abc123",
"failure_reason": "abc123",
"registered": true,
"failed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"manual": true,
"check": "UNKNOWN",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
phoneVerificationTransactionCount
Description
Get count of phone verification transactions with optional filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - PhoneVerificationTransactionFilterInput
|
Example
Query
query phoneVerificationTransactionCount($filters: PhoneVerificationTransactionFilterInput) {
phoneVerificationTransactionCount(filters: $filters)
}
Variables
{"filters": PhoneVerificationTransactionFilterInput}
Response
{"data": {"phoneVerificationTransactionCount": 123.45}}
phoneVerificationTransactionsCursor
Description
Get paginated phone verification transactions using cursor-based pagination
Response
Returns a PhoneVerificationTransactionCursorPaginatedResponse!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - PhoneVerificationTransactionFilterInput
|
|
regexFilters - PhoneVerificationTransactionFilterInput
|
Example
Query
query phoneVerificationTransactionsCursor(
$pagination: CursorPaginationInputType,
$filters: PhoneVerificationTransactionFilterInput,
$regexFilters: PhoneVerificationTransactionFilterInput
) {
phoneVerificationTransactionsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
status
country_iso
provider
phone_number
target_id
customer_name
transaction_id
failure_reason
registered
failed_at
completed_at
manual
check
record_status
createdAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": PhoneVerificationTransactionFilterInput,
"regexFilters": PhoneVerificationTransactionFilterInput
}
Response
{
"data": {
"phoneVerificationTransactionsCursor": {
"data": [PhoneVerificationTransactionDto],
"pagination": CursorPaginationMetadata
}
}
}
phoneVerificationTransactionsOffset
Description
Get paginated phone verification transactions using offset-based pagination
Response
Returns a PhoneVerificationTransactionOffsetPaginatedResponse!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - PhoneVerificationTransactionFilterInput
|
|
regexFilters - PhoneVerificationTransactionFilterInput
|
Example
Query
query phoneVerificationTransactionsOffset(
$pagination: OffsetPaginationInputType,
$filters: PhoneVerificationTransactionFilterInput,
$regexFilters: PhoneVerificationTransactionFilterInput
) {
phoneVerificationTransactionsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
status
country_iso
provider
phone_number
target_id
customer_name
transaction_id
failure_reason
registered
failed_at
completed_at
manual
check
record_status
createdAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": PhoneVerificationTransactionFilterInput,
"regexFilters": PhoneVerificationTransactionFilterInput
}
Response
{
"data": {
"phoneVerificationTransactionsOffset": {
"data": [PhoneVerificationTransactionDto],
"metadata": OffsetPaginationMetadata
}
}
}
pricePlan
Response
Returns a PricePlanObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
Example
Query
query pricePlan($id: String!) {
pricePlan(id: $id) {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
within_months
discount_percent
}
status
is_private
version
metadata
created_at
updated_at
tier {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
versions {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"id": "xyz789"}
Response
{
"data": {
"pricePlan": {
"id": "4",
"tier_id": "xyz789",
"parent_plan_id": "xyz789",
"code": "abc123",
"name": "xyz789",
"min_device_value": 987.65,
"max_device_value": 123.45,
"deposit_percent": 987.65,
"deposit_percent_high": 987.65,
"subsequent_loan_discount_percent": 987.65,
"loan_multiplier": 987.65,
"loan_multiplier_high": 123.45,
"mocare_percent": 123.45,
"duration_months": 987,
"duration_months_high": 123,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": false,
"version": 123,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
}
}
pricePlanByFilter
Response
Returns a PricePlanObjectType
Arguments
| Name | Description |
|---|---|
filters - PricePlanFilterInput
|
Example
Query
query pricePlanByFilter($filters: PricePlanFilterInput) {
pricePlanByFilter(filters: $filters) {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
within_months
discount_percent
}
status
is_private
version
metadata
created_at
updated_at
tier {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
versions {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"filters": PricePlanFilterInput}
Response
{
"data": {
"pricePlanByFilter": {
"id": "4",
"tier_id": "xyz789",
"parent_plan_id": "abc123",
"code": "abc123",
"name": "xyz789",
"min_device_value": 123.45,
"max_device_value": 987.65,
"deposit_percent": 123.45,
"deposit_percent_high": 987.65,
"subsequent_loan_discount_percent": 987.65,
"loan_multiplier": 987.65,
"loan_multiplier_high": 987.65,
"mocare_percent": 987.65,
"duration_months": 987,
"duration_months_high": 123,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": true,
"version": 987,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
}
}
pricePlanVersions
Response
Returns [PricePlanObjectType!]!
Arguments
| Name | Description |
|---|---|
pricePlanId - String!
|
Example
Query
query pricePlanVersions($pricePlanId: String!) {
pricePlanVersions(pricePlanId: $pricePlanId) {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
within_months
discount_percent
}
status
is_private
version
metadata
created_at
updated_at
tier {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
versions {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"pricePlanId": "abc123"}
Response
{
"data": {
"pricePlanVersions": [
{
"id": "4",
"tier_id": "xyz789",
"parent_plan_id": "xyz789",
"code": "xyz789",
"name": "abc123",
"min_device_value": 987.65,
"max_device_value": 123.45,
"deposit_percent": 987.65,
"deposit_percent_high": 123.45,
"subsequent_loan_discount_percent": 987.65,
"loan_multiplier": 987.65,
"loan_multiplier_high": 987.65,
"mocare_percent": 987.65,
"duration_months": 987,
"duration_months_high": 987,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": true,
"version": 987,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
]
}
}
pricePlans
Response
Returns [PricePlanObjectType!]!
Arguments
| Name | Description |
|---|---|
filters - PricePlanFilterInput
|
Example
Query
query pricePlans($filters: PricePlanFilterInput) {
pricePlans(filters: $filters) {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
within_months
discount_percent
}
status
is_private
version
metadata
created_at
updated_at
tier {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
versions {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"filters": PricePlanFilterInput}
Response
{
"data": {
"pricePlans": [
{
"id": "4",
"tier_id": "xyz789",
"parent_plan_id": "xyz789",
"code": "xyz789",
"name": "xyz789",
"min_device_value": 123.45,
"max_device_value": 987.65,
"deposit_percent": 987.65,
"deposit_percent_high": 123.45,
"subsequent_loan_discount_percent": 987.65,
"loan_multiplier": 987.65,
"loan_multiplier_high": 987.65,
"mocare_percent": 123.45,
"duration_months": 123,
"duration_months_high": 123,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": false,
"version": 123,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
]
}
}
pricePlansCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - PricePlanFilterInput
|
Example
Query
query pricePlansCount($filters: PricePlanFilterInput) {
pricePlansCount(filters: $filters)
}
Variables
{"filters": PricePlanFilterInput}
Response
{"data": {"pricePlansCount": 123.45}}
pricePlansCursorPaginated
Response
Returns a CursorPaginatedPricePlans!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - PricePlanFilterInput
|
|
regexFilters - PricePlanFilterInput
|
Example
Query
query pricePlansCursorPaginated(
$pagination: CursorPaginationInputType,
$filters: PricePlanFilterInput,
$regexFilters: PricePlanFilterInput
) {
pricePlansCursorPaginated(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": PricePlanFilterInput,
"regexFilters": PricePlanFilterInput
}
Response
{
"data": {
"pricePlansCursorPaginated": {
"data": [PricePlanObjectType],
"pagination": CursorPaginationMetadata
}
}
}
pricePlansOffsetPaginated
Response
Returns an OffsetPaginatedPricePlans!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - PricePlanFilterInput
|
|
regexFilters - PricePlanFilterInput
|
Example
Query
query pricePlansOffsetPaginated(
$pagination: OffsetPaginationInputType,
$filters: PricePlanFilterInput,
$regexFilters: PricePlanFilterInput
) {
pricePlansOffsetPaginated(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": PricePlanFilterInput,
"regexFilters": PricePlanFilterInput
}
Response
{
"data": {
"pricePlansOffsetPaginated": {
"data": [PricePlanObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
product
Response
Returns a ProductObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query product($id: ID!) {
product(id: $id) {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Variables
{"id": "4"}
Response
{
"data": {
"product": {
"product_id": 4,
"name": "abc123",
"slug": "xyz789",
"brand": "abc123",
"model": "xyz789",
"category_id": "xyz789",
"category": CategoryObjectType,
"description": "xyz789",
"long_description": "xyz789",
"base_specifications": {},
"primary_image_url": "xyz789",
"images": ["abc123"],
"video_url": "xyz789",
"meta_title": "xyz789",
"meta_description": "xyz789",
"keywords": ["abc123"],
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
productOffer
Response
Returns a ProductOfferObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query productOffer($id: ID!) {
productOffer(id: $id) {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"productOffer": {
"product_offer_id": "4",
"sku_id": "4",
"description": "xyz789",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 987.65,
"minimum_purchase_amount": 987.65,
"maximum_discount_amount": 987.65,
"usage_limit": 123,
"usage_count": 987,
"usage_limit_per_customer": 123,
"promo_code": "xyz789",
"category_filters": ["xyz789"],
"brand_filters": ["abc123"],
"applicable_channels": ["abc123"],
"active": false,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
productOffers
Response
Returns [ProductOfferObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - ProductOfferFilterInput
|
Example
Query
query productOffers($filter: ProductOfferFilterInput) {
productOffers(filter: $filter) {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
}
Variables
{"filter": ProductOfferFilterInput}
Response
{
"data": {
"productOffers": [
{
"product_offer_id": 4,
"sku_id": "4",
"description": "abc123",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 123.45,
"minimum_purchase_amount": 987.65,
"maximum_discount_amount": 987.65,
"usage_limit": 123,
"usage_count": 123,
"usage_limit_per_customer": 123,
"promo_code": "abc123",
"category_filters": ["abc123"],
"brand_filters": ["abc123"],
"applicable_channels": ["abc123"],
"active": true,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
productOffersBySeller
Response
Returns [ProductOfferObjectType!]!
Arguments
| Name | Description |
|---|---|
sellerId - ID!
|
Example
Query
query productOffersBySeller($sellerId: ID!) {
productOffersBySeller(sellerId: $sellerId) {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
}
Variables
{"sellerId": 4}
Response
{
"data": {
"productOffersBySeller": [
{
"product_offer_id": "4",
"sku_id": "4",
"description": "xyz789",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 987.65,
"minimum_purchase_amount": 123.45,
"maximum_discount_amount": 987.65,
"usage_limit": 123,
"usage_count": 987,
"usage_limit_per_customer": 987,
"promo_code": "xyz789",
"category_filters": ["abc123"],
"brand_filters": ["abc123"],
"applicable_channels": ["xyz789"],
"active": false,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
productOffersWithCursorPagination
Response
Returns a CursorPaginatedProductOffers!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - ProductOfferFilterInput
|
|
regexFilters - ProductOfferFilterInput
|
Example
Query
query productOffersWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: ProductOfferFilterInput,
$regexFilters: ProductOfferFilterInput
) {
productOffersWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": ProductOfferFilterInput,
"regexFilters": ProductOfferFilterInput
}
Response
{
"data": {
"productOffersWithCursorPagination": {
"data": [ProductOfferObjectType],
"pagination": CursorPaginationMetadata
}
}
}
productOffersWithOffsetPagination
Response
Returns an OffsetPaginatedProductOffers!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - ProductOfferFilterInput
|
|
regexFilters - ProductOfferFilterInput
|
Example
Query
query productOffersWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: ProductOfferFilterInput,
$regexFilters: ProductOfferFilterInput
) {
productOffersWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": ProductOfferFilterInput,
"regexFilters": ProductOfferFilterInput
}
Response
{
"data": {
"productOffersWithOffsetPagination": {
"data": [ProductOfferObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
products
Response
Returns [ProductObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - ProductFilterInput
|
Example
Query
query products($filter: ProductFilterInput) {
products(filter: $filter) {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Variables
{"filter": ProductFilterInput}
Response
{
"data": {
"products": [
{
"product_id": "4",
"name": "abc123",
"slug": "xyz789",
"brand": "abc123",
"model": "abc123",
"category_id": "abc123",
"category": CategoryObjectType,
"description": "xyz789",
"long_description": "xyz789",
"base_specifications": {},
"primary_image_url": "abc123",
"images": ["xyz789"],
"video_url": "xyz789",
"meta_title": "xyz789",
"meta_description": "abc123",
"keywords": ["abc123"],
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
productsByBrand
Response
Returns [ProductObjectType!]!
Arguments
| Name | Description |
|---|---|
brand - String!
|
Example
Query
query productsByBrand($brand: String!) {
productsByBrand(brand: $brand) {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Variables
{"brand": "xyz789"}
Response
{
"data": {
"productsByBrand": [
{
"product_id": "4",
"name": "abc123",
"slug": "xyz789",
"brand": "abc123",
"model": "abc123",
"category_id": "abc123",
"category": CategoryObjectType,
"description": "abc123",
"long_description": "xyz789",
"base_specifications": {},
"primary_image_url": "abc123",
"images": ["abc123"],
"video_url": "abc123",
"meta_title": "xyz789",
"meta_description": "abc123",
"keywords": ["xyz789"],
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
productsByCategory
Response
Returns [ProductObjectType!]!
Arguments
| Name | Description |
|---|---|
categoryId - ID!
|
Example
Query
query productsByCategory($categoryId: ID!) {
productsByCategory(categoryId: $categoryId) {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Variables
{"categoryId": "4"}
Response
{
"data": {
"productsByCategory": [
{
"product_id": "4",
"name": "xyz789",
"slug": "xyz789",
"brand": "abc123",
"model": "abc123",
"category_id": "abc123",
"category": CategoryObjectType,
"description": "xyz789",
"long_description": "abc123",
"base_specifications": {},
"primary_image_url": "xyz789",
"images": ["abc123"],
"video_url": "abc123",
"meta_title": "xyz789",
"meta_description": "xyz789",
"keywords": ["abc123"],
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
productsCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - ProductFilterInput
|
Example
Query
query productsCount($filters: ProductFilterInput) {
productsCount(filters: $filters)
}
Variables
{"filters": ProductFilterInput}
Response
{"data": {"productsCount": 123.45}}
productsWithCursorPagination
Response
Returns a CursorPaginatedProducts!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - ProductFilterInput
|
|
regexFilters - ProductFilterInput
|
Example
Query
query productsWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: ProductFilterInput,
$regexFilters: ProductFilterInput
) {
productsWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": ProductFilterInput,
"regexFilters": ProductFilterInput
}
Response
{
"data": {
"productsWithCursorPagination": {
"data": [ProductObjectType],
"pagination": CursorPaginationMetadata
}
}
}
productsWithOffsetPagination
Response
Returns an OffsetPaginatedProducts!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - ProductFilterInput
|
|
regexFilters - ProductFilterInput
|
Example
Query
query productsWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: ProductFilterInput,
$regexFilters: ProductFilterInput
) {
productsWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": ProductFilterInput,
"regexFilters": ProductFilterInput
}
Response
{
"data": {
"productsWithOffsetPagination": {
"data": [ProductObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
refund
Description
Get a single refund by ID
Response
Returns a RefundGraphQL
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query refund($id: ID!) {
refund(id: $id) {
refund_id
customer_id
sale_id
returns_request_id
order_id
loan_contract_id
source_payment_id
adjustment_id
refund_workflow_type
refund_amount
status
refund_method
transaction_reference
submitted_by
submitted_by_name
actor_id
approved_by
approved_by_name
customer_name
customer_phone
customer_official_id
approved_at
processed_at
completed_at
notes
rejection_reason
returns_request_type
created_at
updated_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"refund": {
"refund_id": "4",
"customer_id": "xyz789",
"sale_id": "xyz789",
"returns_request_id": "xyz789",
"order_id": "xyz789",
"loan_contract_id": "abc123",
"source_payment_id": "xyz789",
"adjustment_id": "xyz789",
"refund_workflow_type": "RETURN",
"refund_amount": 123.45,
"status": "PENDING",
"refund_method": "MPESA",
"transaction_reference": "abc123",
"submitted_by": "abc123",
"submitted_by_name": "xyz789",
"actor_id": "xyz789",
"approved_by": "abc123",
"approved_by_name": "xyz789",
"customer_name": "xyz789",
"customer_phone": "xyz789",
"customer_official_id": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"processed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"notes": "xyz789",
"rejection_reason": "abc123",
"returns_request_type": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
refundsCursor
Description
Get paginated refunds (cursor)
Response
Returns a CursorPaginatedRefunds!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - RefundFilterInput
|
Example
Query
query refundsCursor(
$pagination: CursorPaginationInputType!,
$filters: RefundFilterInput
) {
refundsCursor(
pagination: $pagination,
filters: $filters
) {
data {
refund_id
customer_id
sale_id
returns_request_id
order_id
loan_contract_id
source_payment_id
adjustment_id
refund_workflow_type
refund_amount
status
refund_method
transaction_reference
submitted_by
submitted_by_name
actor_id
approved_by
approved_by_name
customer_name
customer_phone
customer_official_id
approved_at
processed_at
completed_at
notes
rejection_reason
returns_request_type
created_at
updated_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": RefundFilterInput
}
Response
{
"data": {
"refundsCursor": {
"data": [RefundGraphQL],
"pagination": CursorPaginationMetadata
}
}
}
repair
Response
Returns a RepairObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query repair($id: ID!) {
repair(id: $id) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"repair": {
"repair_id": "4",
"repair_display_id": "xyz789",
"requires_technician": true,
"inventory_id": "abc123",
"customer_id": "xyz789",
"original_sale_id": "abc123",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "xyz789",
"hq_diagnostic_notes": "xyz789",
"billing_type": "WARRANTY",
"quoted_price": 123.45,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
}
}
repairs
Response
Returns [RepairObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - RepairFilterInput
|
Example
Query
query repairs($filter: RepairFilterInput) {
repairs(filter: $filter) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{"filter": RepairFilterInput}
Response
{
"data": {
"repairs": [
{
"repair_id": 4,
"repair_display_id": "xyz789",
"requires_technician": true,
"inventory_id": "abc123",
"customer_id": "xyz789",
"original_sale_id": "abc123",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
repairsByCustomer
Response
Returns [RepairObjectType!]!
Arguments
| Name | Description |
|---|---|
customerId - ID!
|
Example
Query
query repairsByCustomer($customerId: ID!) {
repairsByCustomer(customerId: $customerId) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{"customerId": "4"}
Response
{
"data": {
"repairsByCustomer": [
{
"repair_id": 4,
"repair_display_id": "abc123",
"requires_technician": true,
"inventory_id": "abc123",
"customer_id": "abc123",
"original_sale_id": "xyz789",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "xyz789",
"hq_diagnostic_notes": "xyz789",
"billing_type": "WARRANTY",
"quoted_price": 123.45,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
repairsBySeller
Response
Returns [RepairObjectType!]!
Arguments
| Name | Description |
|---|---|
sellerId - ID!
|
Example
Query
query repairsBySeller($sellerId: ID!) {
repairsBySeller(sellerId: $sellerId) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{"sellerId": 4}
Response
{
"data": {
"repairsBySeller": [
{
"repair_id": "4",
"repair_display_id": "abc123",
"requires_technician": true,
"inventory_id": "abc123",
"customer_id": "xyz789",
"original_sale_id": "abc123",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "xyz789",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 123.45,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
repairsWithCursorPagination
Response
Returns a CursorPaginatedRepairs!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - RepairFilterInput
|
|
regexFilters - RepairFilterInput
|
Example
Query
query repairsWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: RepairFilterInput,
$regexFilters: RepairFilterInput
) {
repairsWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
...InventoryObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": RepairFilterInput,
"regexFilters": RepairFilterInput
}
Response
{
"data": {
"repairsWithCursorPagination": {
"data": [RepairObjectType],
"pagination": CursorPaginationMetadata
}
}
}
repairsWithOffsetPagination
Response
Returns an OffsetPaginatedRepairs!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - RepairFilterInput
|
|
regexFilters - RepairFilterInput
|
Example
Query
query repairsWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: RepairFilterInput,
$regexFilters: RepairFilterInput
) {
repairsWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
...InventoryObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": RepairFilterInput,
"regexFilters": RepairFilterInput
}
Response
{
"data": {
"repairsWithOffsetPagination": {
"data": [RepairObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
resolveCommission
Response
Returns a CommissionCalculationType!
Example
Query
query resolveCommission(
$agentProfileId: String!,
$cashPrice: Float!,
$skuId: String,
$effectiveDate: DateTime
) {
resolveCommission(
agentProfileId: $agentProfileId,
cashPrice: $cashPrice,
skuId: $skuId,
effectiveDate: $effectiveDate
) {
product_commission
loan_commission
cash_commission
channel_type
commission_type
is_override
commission_override_id
commission_rule {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
...SkuObjectTypeFragment
}
overrides {
...CommissionOverrideObjectTypeFragment
}
}
}
}
Variables
{
"agentProfileId": "xyz789",
"cashPrice": 123.45,
"skuId": "xyz789",
"effectiveDate": "2007-12-03T10:15:30Z"
}
Response
{
"data": {
"resolveCommission": {
"product_commission": 987.65,
"loan_commission": 987.65,
"cash_commission": 123.45,
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"is_override": false,
"commission_override_id": "xyz789",
"commission_rule": CommissionObjectType
}
}
}
resubmission
Description
Get a single resubmission record by ID
Response
Returns an ApplicationResubmissionGraphQL
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query resubmission($id: ID!) {
resubmission(id: $id) {
_id
prospect_id
lead_id
application_id
changes {
active_selfie
active_front_id
active_back_id
active_mpesa_statement
active_bank_statement
kra_pin
bank_or_statement_or_kra_or_pin
first_name
other_name
id_type
id_number
mpesa_number
preferred_delivery_date
product_change
loan_repayment_period
}
journey
status
submitted_by
validations_to_run
valid_data {
customerId
customerMpesa
nok
kra
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
validations {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
full_name
createdAt
updatedAt
}
}
Variables
{"id": 4}
Response
{
"data": {
"resubmission": {
"_id": "4",
"prospect_id": 4,
"lead_id": 4,
"application_id": 4,
"changes": ResubmissionChangesGraphQL,
"journey": "CREDIT",
"status": "PENDING",
"submitted_by": "abc123",
"validations_to_run": ["abc123"],
"valid_data": ResubmissionValidDataGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"validations": ApplicationActiveValidationReferencesGraphQL,
"full_name": "xyz789",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
resubmissionByFilters
Description
Get a single resubmission record matching filters
Response
Returns an ApplicationResubmissionGraphQL
Arguments
| Name | Description |
|---|---|
filters - ResubmissionFilterInput!
|
Example
Query
query resubmissionByFilters($filters: ResubmissionFilterInput!) {
resubmissionByFilters(filters: $filters) {
_id
prospect_id
lead_id
application_id
changes {
active_selfie
active_front_id
active_back_id
active_mpesa_statement
active_bank_statement
kra_pin
bank_or_statement_or_kra_or_pin
first_name
other_name
id_type
id_number
mpesa_number
preferred_delivery_date
product_change
loan_repayment_period
}
journey
status
submitted_by
validations_to_run
valid_data {
customerId
customerMpesa
nok
kra
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
validations {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
full_name
createdAt
updatedAt
}
}
Variables
{"filters": ResubmissionFilterInput}
Response
{
"data": {
"resubmissionByFilters": {
"_id": "4",
"prospect_id": "4",
"lead_id": "4",
"application_id": 4,
"changes": ResubmissionChangesGraphQL,
"journey": "CREDIT",
"status": "PENDING",
"submitted_by": "abc123",
"validations_to_run": ["abc123"],
"valid_data": ResubmissionValidDataGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"validations": ApplicationActiveValidationReferencesGraphQL,
"full_name": "abc123",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
resubmissionsCount
Description
Get count of resubmission records matching filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - ResubmissionFilterInput
|
Example
Query
query resubmissionsCount($filters: ResubmissionFilterInput) {
resubmissionsCount(filters: $filters)
}
Variables
{"filters": ResubmissionFilterInput}
Response
{"data": {"resubmissionsCount": 987.65}}
resubmissionsCursor
Description
Get cursor-paginated resubmission records
Response
Returns a CursorPaginatedResubmissions!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - ResubmissionFilterInput
|
Example
Query
query resubmissionsCursor(
$pagination: CursorPaginationInputType,
$filters: ResubmissionFilterInput
) {
resubmissionsCursor(
pagination: $pagination,
filters: $filters
) {
data {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": ResubmissionFilterInput
}
Response
{
"data": {
"resubmissionsCursor": {
"data": [ApplicationResubmissionGraphQL],
"pagination": CursorPaginationMetadata
}
}
}
resubmissionsOffset
Description
Get offset-paginated resubmission records
Response
Returns an OffsetPaginatedResubmissions!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - ResubmissionFilterInput
|
Example
Query
query resubmissionsOffset(
$pagination: OffsetPaginationInputType,
$filters: ResubmissionFilterInput
) {
resubmissionsOffset(
pagination: $pagination,
filters: $filters
) {
data {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": ResubmissionFilterInput
}
Response
{
"data": {
"resubmissionsOffset": {
"data": [ApplicationResubmissionGraphQL],
"metadata": OffsetPaginationMetadata
}
}
}
returnsDevicePickerContext
Description
Fate-guide aligned catalog devices for a sale with per-row seller quotes for a price plan, plus current-plan snapshot (single round-trip for returns device selection).
Response
Returns a ReturnsDevicePickerPayload!
Arguments
| Name | Description |
|---|---|
input - ReturnsDevicePickerInput!
|
Example
Query
query returnsDevicePickerContext($input: ReturnsDevicePickerInput!) {
returnsDevicePickerContext(input: $input) {
application_id
customer_id
price_restrictions {
priceRestrictions {
...PriceRestrictionTypeFragment
}
}
current_plan {
plan_id
plan_name
cash_price
deposit_amount
weekly_instalment_amount
deposit_amount_high
weekly_instalment_amount_high
deposit_tier
duration_months
}
devices {
seller_catalog_id
sku_id
seller_id
device_display_name
retail_price
available_stock
platform_owner
deposit_amount
weekly_instalment_amount
deposit_amount_high
weekly_instalment_amount_high
total_loan_amount
weekly_installment_count
duration_months
top_up_or_refund_delta
top_up_or_refund_delta_high
difference_outcome
difference_outcome_high
difference_display_amount
difference_display_amount_high
difference_unavailable_reason
quote_error
}
fate_guide_available_price_plans {
plan_id
plan_name
duration_months
}
pagination {
totalItems
perPage
page
lastPage
}
fate_guide_id
fate_guide_ceilings {
max_cash_price
max_cash_price_high
max_cash_price_mosaver
catalog_max_cash_price
deposit_level
}
effective_price_plan_id
unavailable_reason
quotes_use_present_day_pricing
legacy_price_plan_reference
}
}
Variables
{"input": ReturnsDevicePickerInput}
Response
{
"data": {
"returnsDevicePickerContext": {
"application_id": 4,
"customer_id": "4",
"price_restrictions": OnboardingProductFilterType,
"current_plan": ReturnsDevicePickerCurrentPlanType,
"devices": [ReturnsDevicePickerDeviceRowType],
"fate_guide_available_price_plans": [
ReturnsDevicePickerFatePlanOptionType
],
"pagination": OnboardingPaginationMetadataType,
"fate_guide_id": 4,
"fate_guide_ceilings": ReturnsDevicePickerFateGuideCeilingsType,
"effective_price_plan_id": "4",
"unavailable_reason": "xyz789",
"quotes_use_present_day_pricing": true,
"legacy_price_plan_reference": "abc123"
}
}
}
returnsIntakeFinancialPreview
Description
Latest loan ledger snapshot for returns intake (arrears / balance) by sale
Response
Returns a ReturnsIntakeFinancialPreviewType!
Arguments
| Name | Description |
|---|---|
saleId - ID!
|
Example
Query
query returnsIntakeFinancialPreview($saleId: ID!) {
returnsIntakeFinancialPreview(saleId: $saleId) {
sale_id
has_loan_ledger
arrears_amount
balance_due
amount_paid
loan_age_days
days_since_last_payment
last_payment_date
last_payment_amount
days_past_due
requires_arrears_escalation
ledger_id
contract_id
credit_expiry_date
opening_date
upfront_payment
}
}
Variables
{"saleId": "4"}
Response
{
"data": {
"returnsIntakeFinancialPreview": {
"sale_id": 4,
"has_loan_ledger": false,
"arrears_amount": 123.45,
"balance_due": 987.65,
"amount_paid": 987.65,
"loan_age_days": 123,
"days_since_last_payment": 987,
"last_payment_date": "2007-12-03T10:15:30Z",
"last_payment_amount": 987.65,
"days_past_due": 987.65,
"requires_arrears_escalation": false,
"ledger_id": "4",
"contract_id": "4",
"credit_expiry_date": "2007-12-03T10:15:30Z",
"opening_date": "2007-12-03T10:15:30Z",
"upfront_payment": 123.45
}
}
}
returnsOpsQueue
Description
Pending returns ops queue (paginated; default limit 100, max 100)
Response
Returns a ReturnsOpsQueueResult!
Example
Query
query returnsOpsQueue(
$opsAssignedTo: ID,
$limit: Int
) {
returnsOpsQueue(
opsAssignedTo: $opsAssignedTo,
limit: $limit
) {
items {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
...ResolvedCustomerTypeFragment
}
current_device {
...ResolvedDeviceTypeFragment
}
submitted_by_user {
...ResolvedUserTypeFragment
}
operations_user {
...ResolvedUserTypeFragment
}
decisioner_user {
...ResolvedUserTypeFragment
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
...DeviceAllocationDetailsTypeFragment
}
operations_details {
...OperationsDetailsTypeFragment
}
decisioner_details {
...DecisionerDetailsTypeFragment
}
consent_records {
...ConsentRecordTypeFragment
}
refund_applicable
repossession_details {
...RepossessionDetailsTypeFragment
}
status_history {
...StatusHistoryEntryTypeFragment
}
notes_history {
...ReturnsNoteEntryTypeFragment
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
...WorkflowSwitchTypeFragment
}
reverse_progress
no_stock_at_request
old_product_snapshot {
...ProductSnapshotTypeFragment
}
new_product_snapshot {
...ProductSnapshotTypeFragment
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
total
hasMore
limit
}
}
Variables
{"opsAssignedTo": "4", "limit": 987}
Response
{
"data": {
"returnsOpsQueue": {
"items": [ReturnsGraphQL],
"total": 123,
"hasMore": true,
"limit": 987
}
}
}
returnsOpsTableRowsCursor
Description
Returns requests as ops table rows (batched customer, sale, delivery, loan context) with the same pagination as returnsRequestsCursor
Response
Returns a CursorPaginatedReturnsOpsTableRows!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - ReturnsFilterInput
|
|
regexFilters - ReturnsFilterInput
|
Example
Query
query returnsOpsTableRowsCursor(
$pagination: CursorPaginationInputType,
$filters: ReturnsFilterInput,
$regexFilters: ReturnsFilterInput
) {
returnsOpsTableRowsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
returns_request_id
customer_id
sale_id
request_type
status
ticket_id
return_reason
return_policy
submitted_at
createdAt
updatedAt
customer
products
sale
delivery
notes
superseded_by_request_id
supersedes_request_id
workflow_switch {
...ReturnsOpsWorkflowSwitchFragment
}
customerDetails {
...ReturnsOpsCustomerDetailsFragment
}
oldProduct {
...ReturnsOpsOldProductFragment
}
newProduct {
...ReturnsOpsNewProductFragment
}
returnInfo {
...ReturnsOpsReturnInfoFragment
}
creditInformation {
...ReturnsOpsCreditInformationFragment
}
saleDetails {
...ReturnsOpsSaleDetailsFragment
}
timeline {
...ReturnsOpsTimelineFragment
}
notesDetail {
...ReturnsOpsNotesFragment
}
assignee {
...ReturnsOpsAssigneeFragment
}
actionedBy {
...ReturnsOpsActionedByFragment
}
financeEmailSentTo
swap_repair_mpesa_clearance
intent_consent_collected
topup_confirmed_at
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": ReturnsFilterInput,
"regexFilters": ReturnsFilterInput
}
Response
{
"data": {
"returnsOpsTableRowsCursor": {
"data": [ReturnsOpsTableRow],
"pagination": CursorPaginationMetadata
}
}
}
returnsRequest
Description
Get a single returns request by ID
Response
Returns a ReturnsGraphQL
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query returnsRequest($id: ID!) {
returnsRequest(id: $id) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{"id": "4"}
Response
{
"data": {
"returnsRequest": {
"_id": "4",
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "abc123",
"sale_id": "abc123",
"ticket_id": "abc123",
"current_device_id": "abc123",
"target_device_model": "abc123",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "abc123",
"cxc_notes": "abc123",
"submitted_by": "abc123",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 987.65,
"amount_paid_to_date": 987.65,
"current_device_deposit": 987.65,
"new_device_deposit": 987.65,
"new_device_price": 123.45,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": false,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "xyz789",
"lane_owner": "xyz789",
"superseded_by_request_id": "abc123",
"supersedes_request_id": "xyz789",
"workflow_switch_reason": "xyz789",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": false,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "abc123",
"fulfillment_mode": "xyz789",
"mpesa_reference": "abc123",
"upgrade_policy_mode": "xyz789",
"customer_age_weeks_at_decision": 987,
"new_credit_sale_id": "4",
"new_credit_sale_activated_at": "xyz789",
"topup_confirmed_at": "xyz789",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": true,
"pending_detach_inventory_id": 4,
"manual_detach_detached_at": "abc123",
"manual_detach_inventory_id": 4,
"linked_application_id": "4"
}
}
}
returnsRequestsCount
Description
Get count of returns requests matching filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - ReturnsFilterInput
|
Example
Query
query returnsRequestsCount($filters: ReturnsFilterInput) {
returnsRequestsCount(filters: $filters)
}
Variables
{"filters": ReturnsFilterInput}
Response
{"data": {"returnsRequestsCount": 123.45}}
returnsRequestsCursor
Description
Get paginated returns requests using cursor-based pagination
Response
Returns a CursorPaginatedReturns!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - ReturnsFilterInput
|
|
regexFilters - ReturnsFilterInput
|
Example
Query
query returnsRequestsCursor(
$pagination: CursorPaginationInputType,
$filters: ReturnsFilterInput,
$regexFilters: ReturnsFilterInput
) {
returnsRequestsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
...ResolvedCustomerTypeFragment
}
current_device {
...ResolvedDeviceTypeFragment
}
submitted_by_user {
...ResolvedUserTypeFragment
}
operations_user {
...ResolvedUserTypeFragment
}
decisioner_user {
...ResolvedUserTypeFragment
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
...DeviceAllocationDetailsTypeFragment
}
operations_details {
...OperationsDetailsTypeFragment
}
decisioner_details {
...DecisionerDetailsTypeFragment
}
consent_records {
...ConsentRecordTypeFragment
}
refund_applicable
repossession_details {
...RepossessionDetailsTypeFragment
}
status_history {
...StatusHistoryEntryTypeFragment
}
notes_history {
...ReturnsNoteEntryTypeFragment
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
...WorkflowSwitchTypeFragment
}
reverse_progress
no_stock_at_request
old_product_snapshot {
...ProductSnapshotTypeFragment
}
new_product_snapshot {
...ProductSnapshotTypeFragment
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": ReturnsFilterInput,
"regexFilters": ReturnsFilterInput
}
Response
{
"data": {
"returnsRequestsCursor": {
"data": [ReturnsGraphQL],
"pagination": CursorPaginationMetadata
}
}
}
returnsRequestsOffset
Description
Get paginated returns requests using offset-based pagination
Response
Returns an OffsetPaginatedReturns!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - ReturnsFilterInput
|
|
regexFilters - ReturnsFilterInput
|
Example
Query
query returnsRequestsOffset(
$pagination: OffsetPaginationInputType,
$filters: ReturnsFilterInput,
$regexFilters: ReturnsFilterInput
) {
returnsRequestsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
...ResolvedCustomerTypeFragment
}
current_device {
...ResolvedDeviceTypeFragment
}
submitted_by_user {
...ResolvedUserTypeFragment
}
operations_user {
...ResolvedUserTypeFragment
}
decisioner_user {
...ResolvedUserTypeFragment
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
...DeviceAllocationDetailsTypeFragment
}
operations_details {
...OperationsDetailsTypeFragment
}
decisioner_details {
...DecisionerDetailsTypeFragment
}
consent_records {
...ConsentRecordTypeFragment
}
refund_applicable
repossession_details {
...RepossessionDetailsTypeFragment
}
status_history {
...StatusHistoryEntryTypeFragment
}
notes_history {
...ReturnsNoteEntryTypeFragment
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
...WorkflowSwitchTypeFragment
}
reverse_progress
no_stock_at_request
old_product_snapshot {
...ProductSnapshotTypeFragment
}
new_product_snapshot {
...ProductSnapshotTypeFragment
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": ReturnsFilterInput,
"regexFilters": ReturnsFilterInput
}
Response
{
"data": {
"returnsRequestsOffset": {
"data": [ReturnsGraphQL],
"metadata": OffsetPaginationMetadata
}
}
}
rolesCursor
Response
Returns a CursorPaginatedRoles!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - RoleFilterInput
|
|
regexFilters - RoleFilterInput
|
Example
Query
query rolesCursor(
$pagination: CursorPaginationInputType!,
$filters: RoleFilterInput,
$regexFilters: RoleFilterInput
) {
rolesCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
id
name
level
permissions
description
canManage
realm
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": RoleFilterInput,
"regexFilters": RoleFilterInput
}
Response
{
"data": {
"rolesCursor": {
"data": [RoleObjectType],
"pagination": CursorPaginationMetadata
}
}
}
rolesOffset
Response
Returns an OffsetPaginatedRoles!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - RoleFilterInput
|
|
regexFilters - RoleFilterInput
|
Example
Query
query rolesOffset(
$pagination: OffsetPaginationInputType,
$filters: RoleFilterInput,
$regexFilters: RoleFilterInput
) {
rolesOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
id
name
level
permissions
description
canManage
realm
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": RoleFilterInput,
"regexFilters": RoleFilterInput
}
Response
{
"data": {
"rolesOffset": {
"data": [RoleObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
sale
Response
Returns a SalesObjectType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query sale($id: ID!) {
sale(id: $id) {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
inventory_id
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
loan_contract {
contract_id
loan_id
sale_id
customer_id
customer {
...RawCustomersDtoFragment
}
opening_date
duration
upfront_payment
deposit
repayment_type
gross_loan_amount
net_loan_amount
interest_rate
repayment_rate
interest_calculation_method
payment_allocation_method
disbursement_date
maturity_date
first_payment_due_date
grace_period_days
penalty_rate_per_day
is_restructured
original_contract_id
loan_product_code
loan_status_override
early_payoff_discounts {
...LoanEarlyPayoffDiscountTypeFragment
}
metadata
created_at
updated_at
installments {
...LoanInstallmentDtoFragment
}
overdueInstallments {
...LoanInstallmentDtoFragment
}
nextDueInstallment {
...LoanInstallmentDtoFragment
}
ledgerEntries {
...LoanLedgerDtoFragment
}
delinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
paymentAllocations {
...PaymentAllocationDtoFragment
}
latest_ledger_id
grace_period_status
grace_period_category
grace_period_credit_expiry
grace_period_last_trigger_source
returned_date
is_lost
latest_ledger {
...LoanLedgerDtoFragment
}
contract {
...LoanContractDtoFragment
}
}
commission {
product_commission
loan_commission
cash_commission
channel_type
commission_type
commission_rule_id
commission_override_id
is_override
}
cash_price
reporting {
loan_id
business_model
is_3p_sale
partner_name
credit_check_done
cash_price
loan_price
loan_period
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"sale": {
"sale_id": 4,
"sale_date": "2007-12-03T10:15:30Z",
"order_id": "4",
"customer_id": "4",
"sale_agent_id": "4",
"submitting_agent_id": "4",
"sfm_id": "4",
"price_plan_id": 4,
"pricePlan": PricePlanObjectType,
"inventory_id": "4",
"inventory": InventoryObjectType,
"payment_type": "REPAIR",
"payment_status": "UNPAID",
"normal_high_deposit": "NORMAL",
"final_sale_price": 987.65,
"upfront_payment": 987.65,
"gross_loan_amount": 987.65,
"marketplace_fee": 987.65,
"seller_payout": 123.45,
"invoice_number": "xyz789",
"status": "ACTIVE",
"return_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"order": OrderObjectType,
"loan_contract": LoanContractDto,
"commission": CommissionSnapshotType,
"cash_price": 123.45,
"reporting": SaleReportingType
}
}
}
sales
Response
Returns [SalesObjectType!]
Arguments
| Name | Description |
|---|---|
filters - SalesFilterInput
|
Example
Query
query sales($filters: SalesFilterInput) {
sales(filters: $filters) {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
inventory_id
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
loan_contract {
contract_id
loan_id
sale_id
customer_id
customer {
...RawCustomersDtoFragment
}
opening_date
duration
upfront_payment
deposit
repayment_type
gross_loan_amount
net_loan_amount
interest_rate
repayment_rate
interest_calculation_method
payment_allocation_method
disbursement_date
maturity_date
first_payment_due_date
grace_period_days
penalty_rate_per_day
is_restructured
original_contract_id
loan_product_code
loan_status_override
early_payoff_discounts {
...LoanEarlyPayoffDiscountTypeFragment
}
metadata
created_at
updated_at
installments {
...LoanInstallmentDtoFragment
}
overdueInstallments {
...LoanInstallmentDtoFragment
}
nextDueInstallment {
...LoanInstallmentDtoFragment
}
ledgerEntries {
...LoanLedgerDtoFragment
}
delinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
paymentAllocations {
...PaymentAllocationDtoFragment
}
latest_ledger_id
grace_period_status
grace_period_category
grace_period_credit_expiry
grace_period_last_trigger_source
returned_date
is_lost
latest_ledger {
...LoanLedgerDtoFragment
}
contract {
...LoanContractDtoFragment
}
}
commission {
product_commission
loan_commission
cash_commission
channel_type
commission_type
commission_rule_id
commission_override_id
is_override
}
cash_price
reporting {
loan_id
business_model
is_3p_sale
partner_name
credit_check_done
cash_price
loan_price
loan_period
}
}
}
Variables
{"filters": SalesFilterInput}
Response
{
"data": {
"sales": [
{
"sale_id": 4,
"sale_date": "2007-12-03T10:15:30Z",
"order_id": 4,
"customer_id": 4,
"sale_agent_id": "4",
"submitting_agent_id": 4,
"sfm_id": 4,
"price_plan_id": 4,
"pricePlan": PricePlanObjectType,
"inventory_id": 4,
"inventory": InventoryObjectType,
"payment_type": "REPAIR",
"payment_status": "UNPAID",
"normal_high_deposit": "NORMAL",
"final_sale_price": 987.65,
"upfront_payment": 987.65,
"gross_loan_amount": 123.45,
"marketplace_fee": 123.45,
"seller_payout": 123.45,
"invoice_number": "abc123",
"status": "ACTIVE",
"return_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"order": OrderObjectType,
"loan_contract": LoanContractDto,
"commission": CommissionSnapshotType,
"cash_price": 987.65,
"reporting": SaleReportingType
}
]
}
}
salesCursor
Response
Returns a CursorPaginatedSales!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - SalesFilterInput
|
|
regexFilters - SalesFilterInput
|
Example
Query
query salesCursor(
$pagination: CursorPaginationInputType,
$filters: SalesFilterInput,
$regexFilters: SalesFilterInput
) {
salesCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": SalesFilterInput,
"regexFilters": SalesFilterInput
}
Response
{
"data": {
"salesCursor": {
"data": [SalesObjectType],
"pagination": CursorPaginationMetadata
}
}
}
salesOffset
Response
Returns an OffsetPaginatedSales!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - SalesFilterInput
|
|
regexFilters - SalesFilterInput
|
Example
Query
query salesOffset(
$pagination: OffsetPaginationInputType,
$filters: SalesFilterInput,
$regexFilters: SalesFilterInput
) {
salesOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": SalesFilterInput,
"regexFilters": SalesFilterInput
}
Response
{
"data": {
"salesOffset": {
"data": [SalesObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
searchProducts
Response
Returns [ProductObjectType!]!
Arguments
| Name | Description |
|---|---|
query - String!
|
Example
Query
query searchProducts($query: String!) {
searchProducts(query: $query) {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Variables
{"query": "xyz789"}
Response
{
"data": {
"searchProducts": [
{
"product_id": "4",
"name": "abc123",
"slug": "xyz789",
"brand": "xyz789",
"model": "abc123",
"category_id": "abc123",
"category": CategoryObjectType,
"description": "xyz789",
"long_description": "abc123",
"base_specifications": {},
"primary_image_url": "abc123",
"images": ["xyz789"],
"video_url": "abc123",
"meta_title": "xyz789",
"meta_description": "abc123",
"keywords": ["xyz789"],
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
searchSellers
Response
Returns [SellerObjectType!]!
Arguments
| Name | Description |
|---|---|
query - String!
|
Example
Query
query searchSellers($query: String!) {
searchSellers(query: $query) {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
_id
id
channel_type
channel_category
partner_track
entity_type
is_owner
platform_owner
is_active
is_deleted
owner_user_id
staff_user_ids {
...UserObjectTypeFragment
}
reports_to_id {
...PartnerProfileObjectTypeFragment
}
hierarchy_depth
hierarchy_path
downline_partner_ids
whatsapp_number
secondary_number
location_details {
...LocationDetailsObjectTypeFragment
}
partner_status
assignment_status
training_status
current_cohort_id {
...CohortObjectTypeFragment
}
assigned_trainer_id
assigned_sfm_id
assigned_sfm {
...InternalStaffProfileObjectTypeFragment
}
assigned_promoter_id
assigned_promoter {
...InternalStaffProfileObjectTypeFragment
}
graduation_date
cohort_history {
...CohortEnrollmentObjectTypeFragment
}
assigned_shop_id
shop_based
outlets {
...RetailerOutletObjectTypeFragment
}
shop_metadata {
...StaticShopMetadataObjectTypeFragment
}
kyc_metadata {
...KYCMetadataObjectTypeFragment
}
activation_date
reactivation_date
deactivation_date
created_by {
...UserObjectTypeFragment
}
agent_profile_id {
...AgentProfileObjectTypeFragment
}
shop_manager_id {
...InternalStaffProfileObjectTypeFragment
}
seller_id {
...SellerObjectTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{"query": "abc123"}
Response
{
"data": {
"searchSellers": [
{
"seller_id": "4",
"commission_type_id": "abc123",
"tier_id": "xyz789",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 987.65,
"total_reviews": 123,
"total_sales": 123,
"total_orders_365_days": 123,
"badges": ["xyz789"],
"suspension_reason": "abc123",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "xyz789",
"platform_owner": true,
"partner_profile": PartnerProfileObjectType
}
]
}
}
seller
Response
Returns a SellerObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query seller($id: ID!) {
seller(id: $id) {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
_id
id
channel_type
channel_category
partner_track
entity_type
is_owner
platform_owner
is_active
is_deleted
owner_user_id
staff_user_ids {
...UserObjectTypeFragment
}
reports_to_id {
...PartnerProfileObjectTypeFragment
}
hierarchy_depth
hierarchy_path
downline_partner_ids
whatsapp_number
secondary_number
location_details {
...LocationDetailsObjectTypeFragment
}
partner_status
assignment_status
training_status
current_cohort_id {
...CohortObjectTypeFragment
}
assigned_trainer_id
assigned_sfm_id
assigned_sfm {
...InternalStaffProfileObjectTypeFragment
}
assigned_promoter_id
assigned_promoter {
...InternalStaffProfileObjectTypeFragment
}
graduation_date
cohort_history {
...CohortEnrollmentObjectTypeFragment
}
assigned_shop_id
shop_based
outlets {
...RetailerOutletObjectTypeFragment
}
shop_metadata {
...StaticShopMetadataObjectTypeFragment
}
kyc_metadata {
...KYCMetadataObjectTypeFragment
}
activation_date
reactivation_date
deactivation_date
created_by {
...UserObjectTypeFragment
}
agent_profile_id {
...AgentProfileObjectTypeFragment
}
shop_manager_id {
...InternalStaffProfileObjectTypeFragment
}
seller_id {
...SellerObjectTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"seller": {
"seller_id": "4",
"commission_type_id": "abc123",
"tier_id": "abc123",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 987.65,
"total_reviews": 987,
"total_sales": 987,
"total_orders_365_days": 987,
"badges": ["xyz789"],
"suspension_reason": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "xyz789",
"platform_owner": false,
"partner_profile": PartnerProfileObjectType
}
}
}
sellerByUserId
Response
Returns a SellerObjectType
Arguments
| Name | Description |
|---|---|
userId - ID!
|
Example
Query
query sellerByUserId($userId: ID!) {
sellerByUserId(userId: $userId) {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
_id
id
channel_type
channel_category
partner_track
entity_type
is_owner
platform_owner
is_active
is_deleted
owner_user_id
staff_user_ids {
...UserObjectTypeFragment
}
reports_to_id {
...PartnerProfileObjectTypeFragment
}
hierarchy_depth
hierarchy_path
downline_partner_ids
whatsapp_number
secondary_number
location_details {
...LocationDetailsObjectTypeFragment
}
partner_status
assignment_status
training_status
current_cohort_id {
...CohortObjectTypeFragment
}
assigned_trainer_id
assigned_sfm_id
assigned_sfm {
...InternalStaffProfileObjectTypeFragment
}
assigned_promoter_id
assigned_promoter {
...InternalStaffProfileObjectTypeFragment
}
graduation_date
cohort_history {
...CohortEnrollmentObjectTypeFragment
}
assigned_shop_id
shop_based
outlets {
...RetailerOutletObjectTypeFragment
}
shop_metadata {
...StaticShopMetadataObjectTypeFragment
}
kyc_metadata {
...KYCMetadataObjectTypeFragment
}
activation_date
reactivation_date
deactivation_date
created_by {
...UserObjectTypeFragment
}
agent_profile_id {
...AgentProfileObjectTypeFragment
}
shop_manager_id {
...InternalStaffProfileObjectTypeFragment
}
seller_id {
...SellerObjectTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{"userId": 4}
Response
{
"data": {
"sellerByUserId": {
"seller_id": "4",
"commission_type_id": "abc123",
"tier_id": "xyz789",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 987.65,
"total_reviews": 123,
"total_sales": 123,
"total_orders_365_days": 987,
"badges": ["xyz789"],
"suspension_reason": "abc123",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "abc123",
"platform_owner": false,
"partner_profile": PartnerProfileObjectType
}
}
}
sellerCatalog
Response
Returns a SellerCatalogObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query sellerCatalog($id: ID!) {
sellerCatalog(id: $id) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"sellerCatalog": {
"seller_catalog_id": 4,
"seller_id": "xyz789",
"sku_id": "xyz789",
"cost_price": 987.65,
"retail_price": 123.45,
"currency": "xyz789",
"stock_on_hand": 987,
"reserved_stock": 123,
"is_active": true,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 987,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
}
}
sellerCatalogs
Response
Returns [SellerCatalogObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - SellerCatalogFilterInput
|
Example
Query
query sellerCatalogs($filter: SellerCatalogFilterInput) {
sellerCatalogs(filter: $filter) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"filter": SellerCatalogFilterInput}
Response
{
"data": {
"sellerCatalogs": [
{
"seller_catalog_id": 4,
"seller_id": "xyz789",
"sku_id": "xyz789",
"cost_price": 987.65,
"retail_price": 123.45,
"currency": "xyz789",
"stock_on_hand": 987,
"reserved_stock": 987,
"is_active": true,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 123,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
]
}
}
sellerCatalogsWithCursorPagination
Response
Returns a CursorPaginatedSellerCatalog!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - SellerCatalogFilterInput
|
|
regexFilters - SellerCatalogFilterInput
|
Example
Query
query sellerCatalogsWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: SellerCatalogFilterInput,
$regexFilters: SellerCatalogFilterInput
) {
sellerCatalogsWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": SellerCatalogFilterInput,
"regexFilters": SellerCatalogFilterInput
}
Response
{
"data": {
"sellerCatalogsWithCursorPagination": {
"data": [SellerCatalogObjectType],
"pagination": CursorPaginationMetadata
}
}
}
sellerCatalogsWithOffsetPagination
Response
Returns an OffsetPaginatedSellerCatalog!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - SellerCatalogFilterInput
|
|
regexFilters - SellerCatalogFilterInput
|
Example
Query
query sellerCatalogsWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: SellerCatalogFilterInput,
$regexFilters: SellerCatalogFilterInput
) {
sellerCatalogsWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": SellerCatalogFilterInput,
"regexFilters": SellerCatalogFilterInput
}
Response
{
"data": {
"sellerCatalogsWithOffsetPagination": {
"data": [SellerCatalogObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
sellerQuote
Response
Returns a SellerQuoteType!
Arguments
| Name | Description |
|---|---|
input - SellerQuoteInput!
|
Example
Query
query sellerQuote($input: SellerQuoteInput!) {
sellerQuote(input: $input) {
cash_price
available_plans {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
commission {
product_commission
loan_commission
cash_commission
channel_type
commission_type
is_override
commission_override_id
commission_rule {
...CommissionObjectTypeFragment
}
}
seller_id
calculated_at
}
}
Variables
{"input": SellerQuoteInput}
Response
{
"data": {
"sellerQuote": {
"cash_price": 987.65,
"available_plans": [PricingCalculationType],
"commission": CommissionCalculationType,
"seller_id": "abc123",
"calculated_at": "2007-12-03T10:15:30Z"
}
}
}
sellerTier
Response
Returns a SellerTierObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
Example
Query
query sellerTier($id: String!) {
sellerTier(id: $id) {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"id": "xyz789"}
Response
{
"data": {
"sellerTier": {
"id": 4,
"name": "abc123",
"description": "xyz789",
"priority": 987,
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"price_plans": [PricePlanObjectType]
}
}
}
sellerTierByFilter
Response
Returns a SellerTierObjectType
Arguments
| Name | Description |
|---|---|
filters - SellerTierFilterInput
|
Example
Query
query sellerTierByFilter($filters: SellerTierFilterInput) {
sellerTierByFilter(filters: $filters) {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"filters": SellerTierFilterInput}
Response
{
"data": {
"sellerTierByFilter": {
"id": 4,
"name": "abc123",
"description": "xyz789",
"priority": 123,
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"price_plans": [PricePlanObjectType]
}
}
}
sellerTiers
Response
Returns [SellerTierObjectType!]!
Arguments
| Name | Description |
|---|---|
filters - SellerTierFilterInput
|
Example
Query
query sellerTiers($filters: SellerTierFilterInput) {
sellerTiers(filters: $filters) {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"filters": SellerTierFilterInput}
Response
{
"data": {
"sellerTiers": [
{
"id": "4",
"name": "xyz789",
"description": "abc123",
"priority": 987,
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"price_plans": [PricePlanObjectType]
}
]
}
}
sellerTiersCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - SellerTierFilterInput
|
Example
Query
query sellerTiersCount($filters: SellerTierFilterInput) {
sellerTiersCount(filters: $filters)
}
Variables
{"filters": SellerTierFilterInput}
Response
{"data": {"sellerTiersCount": 987.65}}
sellerTiersCursorPaginated
Response
Returns a CursorPaginatedSellerTiers!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - SellerTierFilterInput
|
|
regexFilters - SellerTierFilterInput
|
Example
Query
query sellerTiersCursorPaginated(
$pagination: CursorPaginationInputType,
$filters: SellerTierFilterInput,
$regexFilters: SellerTierFilterInput
) {
sellerTiersCursorPaginated(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": SellerTierFilterInput,
"regexFilters": SellerTierFilterInput
}
Response
{
"data": {
"sellerTiersCursorPaginated": {
"data": [SellerTierObjectType],
"pagination": CursorPaginationMetadata
}
}
}
sellerTiersOffsetPaginated
Response
Returns an OffsetPaginatedSellerTiers!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - SellerTierFilterInput
|
|
regexFilters - SellerTierFilterInput
|
Example
Query
query sellerTiersOffsetPaginated(
$pagination: OffsetPaginationInputType,
$filters: SellerTierFilterInput,
$regexFilters: SellerTierFilterInput
) {
sellerTiersOffsetPaginated(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": SellerTierFilterInput,
"regexFilters": SellerTierFilterInput
}
Response
{
"data": {
"sellerTiersOffsetPaginated": {
"data": [SellerTierObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
sellers
Response
Returns [SellerObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - SellerFilterInput
|
Example
Query
query sellers($filter: SellerFilterInput) {
sellers(filter: $filter) {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
_id
id
channel_type
channel_category
partner_track
entity_type
is_owner
platform_owner
is_active
is_deleted
owner_user_id
staff_user_ids {
...UserObjectTypeFragment
}
reports_to_id {
...PartnerProfileObjectTypeFragment
}
hierarchy_depth
hierarchy_path
downline_partner_ids
whatsapp_number
secondary_number
location_details {
...LocationDetailsObjectTypeFragment
}
partner_status
assignment_status
training_status
current_cohort_id {
...CohortObjectTypeFragment
}
assigned_trainer_id
assigned_sfm_id
assigned_sfm {
...InternalStaffProfileObjectTypeFragment
}
assigned_promoter_id
assigned_promoter {
...InternalStaffProfileObjectTypeFragment
}
graduation_date
cohort_history {
...CohortEnrollmentObjectTypeFragment
}
assigned_shop_id
shop_based
outlets {
...RetailerOutletObjectTypeFragment
}
shop_metadata {
...StaticShopMetadataObjectTypeFragment
}
kyc_metadata {
...KYCMetadataObjectTypeFragment
}
activation_date
reactivation_date
deactivation_date
created_by {
...UserObjectTypeFragment
}
agent_profile_id {
...AgentProfileObjectTypeFragment
}
shop_manager_id {
...InternalStaffProfileObjectTypeFragment
}
seller_id {
...SellerObjectTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{"filter": SellerFilterInput}
Response
{
"data": {
"sellers": [
{
"seller_id": "4",
"commission_type_id": "abc123",
"tier_id": "abc123",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 123.45,
"total_reviews": 987,
"total_sales": 987,
"total_orders_365_days": 987,
"badges": ["abc123"],
"suspension_reason": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "abc123",
"platform_owner": false,
"partner_profile": PartnerProfileObjectType
}
]
}
}
sellersWithCursorPagination
Response
Returns a CursorPaginatedSellers!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - SellerFilterInput
|
|
regexFilters - SellerFilterInput
|
Example
Query
query sellersWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: SellerFilterInput,
$regexFilters: SellerFilterInput
) {
sellersWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": SellerFilterInput,
"regexFilters": SellerFilterInput
}
Response
{
"data": {
"sellersWithCursorPagination": {
"data": [SellerObjectType],
"pagination": CursorPaginationMetadata
}
}
}
sellersWithOffsetPagination
Response
Returns an OffsetPaginatedSellers!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - SellerFilterInput
|
|
regexFilters - SellerFilterInput
|
Example
Query
query sellersWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: SellerFilterInput,
$regexFilters: SellerFilterInput
) {
sellersWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": SellerFilterInput,
"regexFilters": SellerFilterInput
}
Response
{
"data": {
"sellersWithOffsetPagination": {
"data": [SellerObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
sku
Response
Returns a SkuObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query sku($id: ID!) {
sku(id: $id) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"sku": {
"sku_id": "4",
"product_id": "xyz789",
"condition_id": "abc123",
"parent_sku_id": "abc123",
"level": 987,
"level_attribute_key": "abc123",
"level_attribute_value": "xyz789",
"sku_code": "xyz789",
"name": "xyz789",
"attributes": {},
"variant_specifications": {},
"msrp_price": 123.45,
"min_seller_price": 987.65,
"max_seller_price": 123.45,
"suggested_retail_price": 123.45,
"effective_price": 123.45,
"images": ["abc123"],
"weight_grams": 123,
"dimensions_mm": "abc123",
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
}
}
skuAncestors
Response
Returns [SkuObjectType!]!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query skuAncestors($id: ID!) {
skuAncestors(id: $id) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"skuAncestors": [
{
"sku_id": 4,
"product_id": "abc123",
"condition_id": "xyz789",
"parent_sku_id": "abc123",
"level": 987,
"level_attribute_key": "abc123",
"level_attribute_value": "abc123",
"sku_code": "abc123",
"name": "abc123",
"attributes": {},
"variant_specifications": {},
"msrp_price": 123.45,
"min_seller_price": 123.45,
"max_seller_price": 123.45,
"suggested_retail_price": 987.65,
"effective_price": 987.65,
"images": ["abc123"],
"weight_grams": 987,
"dimensions_mm": "xyz789",
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
]
}
}
skuByCode
Response
Returns a SkuObjectType
Arguments
| Name | Description |
|---|---|
skuCode - String!
|
Example
Query
query skuByCode($skuCode: String!) {
skuByCode(skuCode: $skuCode) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{"skuCode": "abc123"}
Response
{
"data": {
"skuByCode": {
"sku_id": 4,
"product_id": "abc123",
"condition_id": "abc123",
"parent_sku_id": "xyz789",
"level": 123,
"level_attribute_key": "abc123",
"level_attribute_value": "abc123",
"sku_code": "abc123",
"name": "xyz789",
"attributes": {},
"variant_specifications": {},
"msrp_price": 123.45,
"min_seller_price": 123.45,
"max_seller_price": 987.65,
"suggested_retail_price": 987.65,
"effective_price": 123.45,
"images": ["xyz789"],
"weight_grams": 123,
"dimensions_mm": "abc123",
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
}
}
skuEffectivePrice
skuTree
Response
Returns [SkuObjectType!]!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query skuTree($id: ID!) {
skuTree(id: $id) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"skuTree": [
{
"sku_id": "4",
"product_id": "xyz789",
"condition_id": "xyz789",
"parent_sku_id": "abc123",
"level": 987,
"level_attribute_key": "abc123",
"level_attribute_value": "abc123",
"sku_code": "xyz789",
"name": "xyz789",
"attributes": {},
"variant_specifications": {},
"msrp_price": 987.65,
"min_seller_price": 987.65,
"max_seller_price": 123.45,
"suggested_retail_price": 123.45,
"effective_price": 123.45,
"images": ["xyz789"],
"weight_grams": 987,
"dimensions_mm": "abc123",
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
]
}
}
skus
Response
Returns [SkuObjectType!]!
Arguments
| Name | Description |
|---|---|
filter - SkuFilterInput
|
Example
Query
query skus($filter: SkuFilterInput) {
skus(filter: $filter) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{"filter": SkuFilterInput}
Response
{
"data": {
"skus": [
{
"sku_id": 4,
"product_id": "xyz789",
"condition_id": "abc123",
"parent_sku_id": "xyz789",
"level": 123,
"level_attribute_key": "abc123",
"level_attribute_value": "abc123",
"sku_code": "xyz789",
"name": "abc123",
"attributes": {},
"variant_specifications": {},
"msrp_price": 987.65,
"min_seller_price": 987.65,
"max_seller_price": 123.45,
"suggested_retail_price": 987.65,
"effective_price": 987.65,
"images": ["xyz789"],
"weight_grams": 987,
"dimensions_mm": "abc123",
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
]
}
}
skusByProduct
Response
Returns [SkuObjectType!]!
Arguments
| Name | Description |
|---|---|
productId - ID!
|
Example
Query
query skusByProduct($productId: ID!) {
skusByProduct(productId: $productId) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{"productId": 4}
Response
{
"data": {
"skusByProduct": [
{
"sku_id": 4,
"product_id": "xyz789",
"condition_id": "xyz789",
"parent_sku_id": "xyz789",
"level": 123,
"level_attribute_key": "abc123",
"level_attribute_value": "abc123",
"sku_code": "xyz789",
"name": "xyz789",
"attributes": {},
"variant_specifications": {},
"msrp_price": 123.45,
"min_seller_price": 987.65,
"max_seller_price": 123.45,
"suggested_retail_price": 123.45,
"effective_price": 123.45,
"images": ["abc123"],
"weight_grams": 987,
"dimensions_mm": "xyz789",
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
]
}
}
skusCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - SkuFilterInput
|
Example
Query
query skusCount($filters: SkuFilterInput) {
skusCount(filters: $filters)
}
Variables
{"filters": SkuFilterInput}
Response
{"data": {"skusCount": 123.45}}
skusWithCursorPagination
Response
Returns a CursorPaginatedSkus!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - SkuFilterInput
|
|
regexFilters - SkuFilterInput
|
Example
Query
query skusWithCursorPagination(
$pagination: CursorPaginationInputType!,
$filters: SkuFilterInput,
$regexFilters: SkuFilterInput
) {
skusWithCursorPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": SkuFilterInput,
"regexFilters": SkuFilterInput
}
Response
{
"data": {
"skusWithCursorPagination": {
"data": [SkuObjectType],
"pagination": CursorPaginationMetadata
}
}
}
skusWithOffsetPagination
Response
Returns an OffsetPaginatedSkus!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType!
|
|
filters - SkuFilterInput
|
|
regexFilters - SkuFilterInput
|
Example
Query
query skusWithOffsetPagination(
$pagination: OffsetPaginationInputType!,
$filters: SkuFilterInput,
$regexFilters: SkuFilterInput
) {
skusWithOffsetPagination(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": SkuFilterInput,
"regexFilters": SkuFilterInput
}
Response
{
"data": {
"skusWithOffsetPagination": {
"data": [SkuObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
taxVerificationTransaction
Description
Get a single tax verification transaction by ID
Response
Returns a TaxVerificationTransactionDto
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query taxVerificationTransaction($id: ID!) {
taxVerificationTransaction(id: $id) {
id
provider
full_name
identification_type
pin_number
expiration_date
issuance_date
phone
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_pin_active
email
country
record_status
createdAt
}
}
Variables
{"id": "4"}
Response
{
"data": {
"taxVerificationTransaction": {
"id": 4,
"provider": "BOT",
"full_name": "xyz789",
"identification_type": "abc123",
"pin_number": "abc123",
"expiration_date": "abc123",
"issuance_date": "xyz789",
"phone": "xyz789",
"gender": "xyz789",
"date_of_birth": "abc123",
"place_of_birth": "xyz789",
"kra_pin": "abc123",
"citizenship": "abc123",
"is_pin_active": 123,
"email": "xyz789",
"country": "abc123",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
taxVerificationTransactionByFilters
Description
Get a single tax verification transaction by filters
Response
Returns a TaxVerificationTransactionDto
Arguments
| Name | Description |
|---|---|
filters - TaxVerificationTransactionFilterInput!
|
Example
Query
query taxVerificationTransactionByFilters($filters: TaxVerificationTransactionFilterInput!) {
taxVerificationTransactionByFilters(filters: $filters) {
id
provider
full_name
identification_type
pin_number
expiration_date
issuance_date
phone
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_pin_active
email
country
record_status
createdAt
}
}
Variables
{"filters": TaxVerificationTransactionFilterInput}
Response
{
"data": {
"taxVerificationTransactionByFilters": {
"id": 4,
"provider": "BOT",
"full_name": "abc123",
"identification_type": "xyz789",
"pin_number": "xyz789",
"expiration_date": "xyz789",
"issuance_date": "xyz789",
"phone": "xyz789",
"gender": "xyz789",
"date_of_birth": "abc123",
"place_of_birth": "abc123",
"kra_pin": "abc123",
"citizenship": "abc123",
"is_pin_active": 987,
"email": "abc123",
"country": "abc123",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
taxVerificationTransactionCount
Description
Get count of tax verification transactions with optional filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - TaxVerificationTransactionFilterInput
|
Example
Query
query taxVerificationTransactionCount($filters: TaxVerificationTransactionFilterInput) {
taxVerificationTransactionCount(filters: $filters)
}
Variables
{"filters": TaxVerificationTransactionFilterInput}
Response
{"data": {"taxVerificationTransactionCount": 987.65}}
taxVerificationTransactionsCursor
Description
Get paginated tax verification transactions using cursor-based pagination
Response
Returns a TaxVerificationTransactionCursorPaginatedResponse!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - TaxVerificationTransactionFilterInput
|
|
regexFilters - TaxVerificationTransactionFilterInput
|
Example
Query
query taxVerificationTransactionsCursor(
$pagination: CursorPaginationInputType,
$filters: TaxVerificationTransactionFilterInput,
$regexFilters: TaxVerificationTransactionFilterInput
) {
taxVerificationTransactionsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
provider
full_name
identification_type
pin_number
expiration_date
issuance_date
phone
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_pin_active
email
country
record_status
createdAt
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": TaxVerificationTransactionFilterInput,
"regexFilters": TaxVerificationTransactionFilterInput
}
Response
{
"data": {
"taxVerificationTransactionsCursor": {
"data": [TaxVerificationTransactionDto],
"pagination": CursorPaginationMetadata
}
}
}
taxVerificationTransactionsOffset
Description
Get paginated tax verification transactions using offset-based pagination
Response
Returns a TaxVerificationTransactionOffsetPaginatedResponse!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - TaxVerificationTransactionFilterInput
|
|
regexFilters - TaxVerificationTransactionFilterInput
|
Example
Query
query taxVerificationTransactionsOffset(
$pagination: OffsetPaginationInputType,
$filters: TaxVerificationTransactionFilterInput,
$regexFilters: TaxVerificationTransactionFilterInput
) {
taxVerificationTransactionsOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
id
provider
full_name
identification_type
pin_number
expiration_date
issuance_date
phone
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_pin_active
email
country
record_status
createdAt
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": TaxVerificationTransactionFilterInput,
"regexFilters": TaxVerificationTransactionFilterInput
}
Response
{
"data": {
"taxVerificationTransactionsOffset": {
"data": [TaxVerificationTransactionDto],
"metadata": OffsetPaginationMetadata
}
}
}
technicianRepairs
Response
Returns [RepairObjectType!]!
Example
Query
query technicianRepairs {
technicianRepairs {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Response
{
"data": {
"technicianRepairs": [
{
"repair_id": 4,
"repair_display_id": "abc123",
"requires_technician": false,
"inventory_id": "xyz789",
"customer_id": "abc123",
"original_sale_id": "abc123",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "xyz789",
"hq_diagnostic_notes": "xyz789",
"billing_type": "WARRANTY",
"quoted_price": 123.45,
"spares_cost": 987.65,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
territory_module
Description
Access territory module operations
Response
Returns a TerritoryModuleNamespace!
Example
Query
query territory_module {
territory_module {
geography {
countries {
...CountryObjectTypeFragment
}
country {
...CountryObjectTypeFragment
}
countryByFilter {
...CountryObjectTypeFragment
}
regions {
...RegionObjectTypeFragment
}
regionByIsocode {
...RegionObjectTypeFragment
}
region {
...RegionObjectTypeFragment
}
districts {
...DistrictObjectTypeFragment
}
district {
...DistrictObjectTypeFragment
}
wards {
...WardObjectTypeFragment
}
zones {
...ZoneObjectTypeFragment
}
zone {
...ZoneObjectTypeFragment
}
zonesByCoordinates {
...ZoneObjectTypeFragment
}
ward {
...WardObjectTypeFragment
}
hierarchyPath {
...HierarchyPathFragment
}
tree {
...TerritoryTreeNodeFragment
}
countriesCursor {
...CursorPaginatedCountriesFragment
}
regionsCursor {
...CursorPaginatedRegionsFragment
}
districtsCursor {
...CursorPaginatedDistrictsFragment
}
wardsCursor {
...CursorPaginatedWardsFragment
}
updateRegion {
...RegionObjectTypeFragment
}
updateZone {
...ZoneObjectTypeFragment
}
createZone {
...ZoneObjectTypeFragment
}
toggleRegionInZone {
...RegionObjectTypeFragment
}
}
territory {
list {
...TerritoryObjectTypeFragment
}
get {
...TerritoryObjectTypeFragment
}
byRegion {
...TerritoryObjectTypeFragment
}
byLevel {
...TerritoryObjectTypeFragment
}
create {
...TerritoryObjectTypeFragment
}
update {
...TerritoryObjectTypeFragment
}
deactivate {
...TerritoryObjectTypeFragment
}
addWards {
...TerritoryObjectTypeFragment
}
removeWards {
...TerritoryObjectTypeFragment
}
addZones {
...TerritoryObjectTypeFragment
}
removeZones {
...TerritoryObjectTypeFragment
}
}
territoryAssignment {
entityTerritories {
...TerritoryAssignmentObjectTypeFragment
}
territoryEntities {
...TerritoryAssignmentObjectTypeFragment
}
history {
...TerritoryAssignmentObjectTypeFragment
}
list {
...TerritoryAssignmentObjectTypeFragment
}
assign {
...TerritoryAssignmentObjectTypeFragment
}
unassign {
...TerritoryAssignmentObjectTypeFragment
}
transfer {
...TerritoryTransferResultTypeFragment
}
}
territoryCoverage {
forTerritory {
...TerritoryCoverageObjectTypeFragment
}
flagged {
...TerritoryCoverageObjectTypeFragment
}
gaps {
...TerritoryCoverageObjectTypeFragment
}
overlaps {
...TerritoryCoverageObjectTypeFragment
}
resolve {
...TerritoryCoverageObjectTypeFragment
}
}
}
}
Response
{
"data": {
"territory_module": {
"geography": GeographyNamespace,
"territory": TerritoryNamespace,
"territoryAssignment": TerritoryAssignmentNamespace,
"territoryCoverage": TerritoryCoverageNamespace
}
}
}
topDiscountedItems
Response
Returns [FlashSaleItemObjectType!]!
Arguments
| Name | Description |
|---|---|
limit - Float!
|
Default = 10 |
Example
Query
query topDiscountedItems($limit: Float!) {
topDiscountedItems(limit: $limit) {
flash_sale_item_id
flash_sale_id
seller_catalog_id
product_id
sku_id
original_price
flash_sale_price
discount_percentage
stock_allocated
stock_sold
stock_remaining
max_per_customer
display_priority
is_featured
badge_text
created_at
}
}
Variables
{"limit": 10}
Response
{
"data": {
"topDiscountedItems": [
{
"flash_sale_item_id": "4",
"flash_sale_id": "abc123",
"seller_catalog_id": "abc123",
"product_id": "xyz789",
"sku_id": "xyz789",
"original_price": 123.45,
"flash_sale_price": 123.45,
"discount_percentage": 123.45,
"stock_allocated": 123,
"stock_sold": 987,
"stock_remaining": 123,
"max_per_customer": 987,
"display_priority": 987,
"is_featured": true,
"badge_text": "abc123",
"created_at": "2007-12-03T10:15:30Z"
}
]
}
}
topRatedSellers
Response
Returns [SellerObjectType!]!
Arguments
| Name | Description |
|---|---|
limit - Float!
|
Default = 10 |
Example
Query
query topRatedSellers($limit: Float!) {
topRatedSellers(limit: $limit) {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
_id
id
channel_type
channel_category
partner_track
entity_type
is_owner
platform_owner
is_active
is_deleted
owner_user_id
staff_user_ids {
...UserObjectTypeFragment
}
reports_to_id {
...PartnerProfileObjectTypeFragment
}
hierarchy_depth
hierarchy_path
downline_partner_ids
whatsapp_number
secondary_number
location_details {
...LocationDetailsObjectTypeFragment
}
partner_status
assignment_status
training_status
current_cohort_id {
...CohortObjectTypeFragment
}
assigned_trainer_id
assigned_sfm_id
assigned_sfm {
...InternalStaffProfileObjectTypeFragment
}
assigned_promoter_id
assigned_promoter {
...InternalStaffProfileObjectTypeFragment
}
graduation_date
cohort_history {
...CohortEnrollmentObjectTypeFragment
}
assigned_shop_id
shop_based
outlets {
...RetailerOutletObjectTypeFragment
}
shop_metadata {
...StaticShopMetadataObjectTypeFragment
}
kyc_metadata {
...KYCMetadataObjectTypeFragment
}
activation_date
reactivation_date
deactivation_date
created_by {
...UserObjectTypeFragment
}
agent_profile_id {
...AgentProfileObjectTypeFragment
}
shop_manager_id {
...InternalStaffProfileObjectTypeFragment
}
seller_id {
...SellerObjectTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{"limit": 10}
Response
{
"data": {
"topRatedSellers": [
{
"seller_id": "4",
"commission_type_id": "xyz789",
"tier_id": "abc123",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 123.45,
"total_reviews": 123,
"total_sales": 987,
"total_orders_365_days": 987,
"badges": ["abc123"],
"suspension_reason": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "abc123",
"platform_owner": true,
"partner_profile": PartnerProfileObjectType
}
]
}
}
upcomingFlashSales
Response
Returns [FlashSaleObjectType!]!
Example
Query
query upcomingFlashSales {
upcomingFlashSales {
flash_sale_id
title
slug
description
start_date
end_date
status
max_quantity
sold_quantity
min_discount_percentage
is_featured
banner_image
icon_url
countdown_display
priority
participating_sellers
performance_metrics
meta_title
meta_description
created_at
updated_at
}
}
Response
{
"data": {
"upcomingFlashSales": [
{
"flash_sale_id": 4,
"title": "abc123",
"slug": "xyz789",
"description": "abc123",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 123,
"sold_quantity": 123,
"min_discount_percentage": 987.65,
"is_featured": true,
"banner_image": "xyz789",
"icon_url": "abc123",
"countdown_display": false,
"priority": 123,
"participating_sellers": ["abc123"],
"performance_metrics": {},
"meta_title": "xyz789",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
]
}
}
urgentRepairs
Response
Returns [RepairObjectType!]!
Example
Query
query urgentRepairs {
urgentRepairs {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Response
{
"data": {
"urgentRepairs": [
{
"repair_id": "4",
"repair_display_id": "abc123",
"requires_technician": false,
"inventory_id": "abc123",
"customer_id": "abc123",
"original_sale_id": "xyz789",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
]
}
}
user
Response
Returns a UserObjectType
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query user($id: ID!) {
user(id: $id) {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"user": {
"_id": "4",
"id": "xyz789",
"keycloak_id": "xyz789",
"username": "xyz789",
"email": "abc123",
"first_name": "abc123",
"surname": "xyz789",
"last_name": "abc123",
"phone_number": "xyz789",
"role": "xyz789",
"enabled": false,
"user_type": "SYSTEM_ADMIN",
"is_internal": false,
"first_login": "2007-12-03T10:15:30Z",
"last_login": "2007-12-03T10:15:30Z",
"availability_status": "AVAILABLE",
"synced_at": "2007-12-03T10:15:30Z",
"group_memberships": ["xyz789"],
"permissions": ["xyz789"],
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
userByFilters
Response
Returns a UserObjectType
Arguments
| Name | Description |
|---|---|
filters - UserFilterInput!
|
Example
Query
query userByFilters($filters: UserFilterInput!) {
userByFilters(filters: $filters) {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
}
Variables
{"filters": UserFilterInput}
Response
{
"data": {
"userByFilters": {
"_id": 4,
"id": "abc123",
"keycloak_id": "xyz789",
"username": "abc123",
"email": "xyz789",
"first_name": "abc123",
"surname": "abc123",
"last_name": "abc123",
"phone_number": "xyz789",
"role": "xyz789",
"enabled": false,
"user_type": "SYSTEM_ADMIN",
"is_internal": false,
"first_login": "2007-12-03T10:15:30Z",
"last_login": "2007-12-03T10:15:30Z",
"availability_status": "AVAILABLE",
"synced_at": "2007-12-03T10:15:30Z",
"group_memberships": ["xyz789"],
"permissions": ["abc123"],
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
userSyncKeycloack
Response
Returns a SuccessResponse!
Example
Query
query userSyncKeycloack {
userSyncKeycloack {
success
message
}
}
Response
{
"data": {
"userSyncKeycloack": {
"success": false,
"message": "abc123"
}
}
}
userSyncStatus
usersCursor
Response
Returns a CursorPaginatedUsers!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - UserFilterInput
|
|
regexFilters - UserFilterInput
|
Example
Query
query usersCursor(
$pagination: CursorPaginationInputType!,
$filters: UserFilterInput,
$regexFilters: UserFilterInput
) {
usersCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": UserFilterInput,
"regexFilters": UserFilterInput
}
Response
{
"data": {
"usersCursor": {
"data": [UserObjectType],
"pagination": CursorPaginationMetadata
}
}
}
usersOffset
Response
Returns an OffsetPaginatedUsers!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - UserFilterInput
|
|
regexFilters - UserFilterInput
|
Example
Query
query usersOffset(
$pagination: OffsetPaginationInputType,
$filters: UserFilterInput,
$regexFilters: UserFilterInput
) {
usersOffset(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": UserFilterInput,
"regexFilters": UserFilterInput
}
Response
{
"data": {
"usersOffset": {
"data": [UserObjectType],
"metadata": OffsetPaginationMetadata
}
}
}
validateReferralCode
Response
Returns a ReferralCodeValidationResult!
Arguments
| Name | Description |
|---|---|
referral_code - String!
|
Example
Query
query validateReferralCode($referral_code: String!) {
validateReferralCode(referral_code: $referral_code) {
is_valid
customer_id
referral_code
error_code
}
}
Variables
{"referral_code": "abc123"}
Response
{
"data": {
"validateReferralCode": {
"is_valid": true,
"customer_id": "abc123",
"referral_code": "abc123",
"error_code": "xyz789"
}
}
}
validationRecord
Description
Get a single validation record by ID
Response
Returns a ValidationRecordGraphQLEntity
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query validationRecord($id: ID!) {
validationRecord(id: $id) {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
provider
error_message
verified_message
result_id
tenant_id
tenant_name
tag
bucket
exception_granted
exception_details
duplicate_details {
...DuplicateDetailGraphQLFragment
}
otp_details {
...OtpDetailGraphQLFragment
}
}
createdAt
updatedAt
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"validationRecord": {
"_id": "4",
"target": "LEAD",
"target_id": "4",
"type": "CUSTOMER_IPRS",
"status": "RUNNING",
"action": "CASH_JOURNEY",
"result": true,
"attempts_count": 123.45,
"max_attempts": 123.45,
"data": ValidationDataGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"application": ApplicationEntityGraphQL
}
}
}
validationRecordsByTargetId
Description
Get all validation records for a target entity (e.g. application)
Response
Arguments
| Name | Description |
|---|---|
targetId - ID!
|
Example
Query
query validationRecordsByTargetId($targetId: ID!) {
validationRecordsByTargetId(targetId: $targetId) {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
provider
error_message
verified_message
result_id
tenant_id
tenant_name
tag
bucket
exception_granted
exception_details
duplicate_details {
...DuplicateDetailGraphQLFragment
}
otp_details {
...OtpDetailGraphQLFragment
}
}
createdAt
updatedAt
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
}
}
Variables
{"targetId": "4"}
Response
{
"data": {
"validationRecordsByTargetId": [
{
"_id": 4,
"target": "LEAD",
"target_id": "4",
"type": "CUSTOMER_IPRS",
"status": "RUNNING",
"action": "CASH_JOURNEY",
"result": true,
"attempts_count": 123.45,
"max_attempts": 123.45,
"data": ValidationDataGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"application": ApplicationEntityGraphQL
}
]
}
}
validationRecordsCount
Description
Get count of validation records matching filters
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - ValidationRecordFilterInput
|
Example
Query
query validationRecordsCount($filters: ValidationRecordFilterInput) {
validationRecordsCount(filters: $filters)
}
Variables
{"filters": ValidationRecordFilterInput}
Response
{"data": {"validationRecordsCount": 123.45}}
validationRecordsCursor
Description
Get paginated validation records using cursor-based pagination
Response
Returns a CursorPaginatedValidationRecords!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType
|
|
filters - ValidationRecordFilterInput
|
Example
Query
query validationRecordsCursor(
$pagination: CursorPaginationInputType,
$filters: ValidationRecordFilterInput
) {
validationRecordsCursor(
pagination: $pagination,
filters: $filters
) {
data {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": ValidationRecordFilterInput
}
Response
{
"data": {
"validationRecordsCursor": {
"data": [ValidationRecordGraphQLEntity],
"pagination": CursorPaginationMetadata
}
}
}
validationRecordsOffset
Description
Get paginated validation records using offset-based pagination
Response
Returns an OffsetPaginatedValidationRecords!
Arguments
| Name | Description |
|---|---|
pagination - OffsetPaginationInputType
|
|
filters - ValidationRecordFilterInput
|
Example
Query
query validationRecordsOffset(
$pagination: OffsetPaginationInputType,
$filters: ValidationRecordFilterInput
) {
validationRecordsOffset(
pagination: $pagination,
filters: $filters
) {
data {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
metadata {
totalItems
perPage
page
lastPage
}
}
}
Variables
{
"pagination": OffsetPaginationInputType,
"filters": ValidationRecordFilterInput
}
Response
{
"data": {
"validationRecordsOffset": {
"data": [ValidationRecordGraphQLEntity],
"metadata": OffsetPaginationMetadata
}
}
}
verifyReturnsMpesaPaymentReference
Description
Verify an M-Pesa / provider reference is MATCHED, belongs to the customer, and is allocated to the sale
Response
Returns a VerifyReturnsMpesaReferencePayloadType!
Example
Query
query verifyReturnsMpesaPaymentReference(
$saleId: ID!,
$customerId: ID!,
$mpesaReference: String!,
$expectedAmount: Float
) {
verifyReturnsMpesaPaymentReference(
saleId: $saleId,
customerId: $customerId,
mpesaReference: $mpesaReference,
expectedAmount: $expectedAmount
) {
verified
payment_id
payment_amount
payment_reconciliation_status
payment_provider_reference
}
}
Variables
{
"saleId": "4",
"customerId": 4,
"mpesaReference": "abc123",
"expectedAmount": 123.45
}
Response
{
"data": {
"verifyReturnsMpesaPaymentReference": {
"verified": true,
"payment_id": "4",
"payment_amount": 123.45,
"payment_reconciliation_status": "xyz789",
"payment_provider_reference": "xyz789"
}
}
}
walletTransaction
Response
Returns a RawWalletTransactionsDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query walletTransaction($id: ID!) {
walletTransaction(id: $id) {
wallet_transaction_id
wallet_id
customer_id
sale_id
wallet_transaction_ref_id
wallet_transaction_type
wallet_transaction_sub_type
wallet_transaction_amount
wallet_transaction_balance_before
wallet_transaction_balance_after
wallet_transaction_days_value
wallet_transaction_points_value
wallet_transaction_status
reference
wallet_transaction_description
wallet_transaction_metadata
wallet_transaction_created_at
wallet_transaction_updated_at
wallet_transaction_completed_at
}
}
Variables
{"id": "4"}
Response
{
"data": {
"walletTransaction": {
"wallet_transaction_id": "4",
"wallet_id": "4",
"customer_id": "4",
"sale_id": 4,
"wallet_transaction_ref_id": 4,
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 987.65,
"wallet_transaction_balance_before": 987.65,
"wallet_transaction_balance_after": 987.65,
"wallet_transaction_days_value": 123.45,
"wallet_transaction_points_value": 987.65,
"wallet_transaction_status": "PENDING",
"reference": "abc123",
"wallet_transaction_description": "xyz789",
"wallet_transaction_metadata": {},
"wallet_transaction_created_at": "2007-12-03T10:15:30Z",
"wallet_transaction_updated_at": "2007-12-03T10:15:30Z",
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
}
}
walletTransactionByFilters
Response
Returns a RawWalletTransactionsDto
Arguments
| Name | Description |
|---|---|
filters - WalletTransactionsFilterInput!
|
Example
Query
query walletTransactionByFilters($filters: WalletTransactionsFilterInput!) {
walletTransactionByFilters(filters: $filters) {
wallet_transaction_id
wallet_id
customer_id
sale_id
wallet_transaction_ref_id
wallet_transaction_type
wallet_transaction_sub_type
wallet_transaction_amount
wallet_transaction_balance_before
wallet_transaction_balance_after
wallet_transaction_days_value
wallet_transaction_points_value
wallet_transaction_status
reference
wallet_transaction_description
wallet_transaction_metadata
wallet_transaction_created_at
wallet_transaction_updated_at
wallet_transaction_completed_at
}
}
Variables
{"filters": WalletTransactionsFilterInput}
Response
{
"data": {
"walletTransactionByFilters": {
"wallet_transaction_id": 4,
"wallet_id": "4",
"customer_id": "4",
"sale_id": 4,
"wallet_transaction_ref_id": 4,
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 987.65,
"wallet_transaction_balance_before": 123.45,
"wallet_transaction_balance_after": 987.65,
"wallet_transaction_days_value": 123.45,
"wallet_transaction_points_value": 123.45,
"wallet_transaction_status": "PENDING",
"reference": "abc123",
"wallet_transaction_description": "abc123",
"wallet_transaction_metadata": {},
"wallet_transaction_created_at": "2007-12-03T10:15:30Z",
"wallet_transaction_updated_at": "2007-12-03T10:15:30Z",
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
}
}
walletTransactions
Response
Returns [RawWalletTransactionsDto!]!
Arguments
| Name | Description |
|---|---|
filters - WalletTransactionsFilterInput
|
Example
Query
query walletTransactions($filters: WalletTransactionsFilterInput) {
walletTransactions(filters: $filters) {
wallet_transaction_id
wallet_id
customer_id
sale_id
wallet_transaction_ref_id
wallet_transaction_type
wallet_transaction_sub_type
wallet_transaction_amount
wallet_transaction_balance_before
wallet_transaction_balance_after
wallet_transaction_days_value
wallet_transaction_points_value
wallet_transaction_status
reference
wallet_transaction_description
wallet_transaction_metadata
wallet_transaction_created_at
wallet_transaction_updated_at
wallet_transaction_completed_at
}
}
Variables
{"filters": WalletTransactionsFilterInput}
Response
{
"data": {
"walletTransactions": [
{
"wallet_transaction_id": 4,
"wallet_id": "4",
"customer_id": "4",
"sale_id": "4",
"wallet_transaction_ref_id": "4",
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 987.65,
"wallet_transaction_balance_before": 987.65,
"wallet_transaction_balance_after": 123.45,
"wallet_transaction_days_value": 123.45,
"wallet_transaction_points_value": 987.65,
"wallet_transaction_status": "PENDING",
"reference": "abc123",
"wallet_transaction_description": "abc123",
"wallet_transaction_metadata": {},
"wallet_transaction_created_at": "2007-12-03T10:15:30Z",
"wallet_transaction_updated_at": "2007-12-03T10:15:30Z",
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
]
}
}
walletTransactionsCount
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - WalletTransactionsFilterInput
|
Example
Query
query walletTransactionsCount($filters: WalletTransactionsFilterInput) {
walletTransactionsCount(filters: $filters)
}
Variables
{"filters": WalletTransactionsFilterInput}
Response
{"data": {"walletTransactionsCount": 987.65}}
walletTransactionsCursor
Description
Get paginated wallet transaction (cursor)
Response
Returns a CursorPaginatedRawWalletTransactions!
Arguments
| Name | Description |
|---|---|
pagination - CursorPaginationInputType!
|
|
filters - WalletTransactionsFilterInput
|
|
regexFilters - WalletTransactionsFilterInput
|
Example
Query
query walletTransactionsCursor(
$pagination: CursorPaginationInputType!,
$filters: WalletTransactionsFilterInput,
$regexFilters: WalletTransactionsFilterInput
) {
walletTransactionsCursor(
pagination: $pagination,
filters: $filters,
regexFilters: $regexFilters
) {
data {
wallet_transaction_id
wallet_id
customer_id
sale_id
wallet_transaction_ref_id
wallet_transaction_type
wallet_transaction_sub_type
wallet_transaction_amount
wallet_transaction_balance_before
wallet_transaction_balance_after
wallet_transaction_days_value
wallet_transaction_points_value
wallet_transaction_status
reference
wallet_transaction_description
wallet_transaction_metadata
wallet_transaction_created_at
wallet_transaction_updated_at
wallet_transaction_completed_at
}
pagination {
nextCursor
prevCursor
hasNext
hasPrev
count
}
}
}
Variables
{
"pagination": CursorPaginationInputType,
"filters": WalletTransactionsFilterInput,
"regexFilters": WalletTransactionsFilterInput
}
Response
{
"data": {
"walletTransactionsCursor": {
"data": [RawWalletTransactionsDto],
"pagination": CursorPaginationMetadata
}
}
}
Mutations
activateFlashSale
Response
Returns a FlashSaleObjectType!
Example
Query
mutation activateFlashSale(
$id: ID!,
$activatedBy: ID!
) {
activateFlashSale(
id: $id,
activatedBy: $activatedBy
) {
flash_sale_id
title
slug
description
start_date
end_date
status
max_quantity
sold_quantity
min_discount_percentage
is_featured
banner_image
icon_url
countdown_display
priority
participating_sellers
performance_metrics
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"id": "4", "activatedBy": 4}
Response
{
"data": {
"activateFlashSale": {
"flash_sale_id": "4",
"title": "abc123",
"slug": "abc123",
"description": "abc123",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 987,
"sold_quantity": 123,
"min_discount_percentage": 123.45,
"is_featured": true,
"banner_image": "xyz789",
"icon_url": "xyz789",
"countdown_display": false,
"priority": 123,
"participating_sellers": ["abc123"],
"performance_metrics": {},
"meta_title": "xyz789",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
activateListing
Response
Returns a SellerCatalogObjectType!
Arguments
| Name | Description |
|---|---|
catalogId - ID!
|
Example
Query
mutation activateListing($catalogId: ID!) {
activateListing(catalogId: $catalogId) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"catalogId": "4"}
Response
{
"data": {
"activateListing": {
"seller_catalog_id": "4",
"seller_id": "xyz789",
"sku_id": "abc123",
"cost_price": 123.45,
"retail_price": 123.45,
"currency": "xyz789",
"stock_on_hand": 987,
"reserved_stock": 987,
"is_active": false,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 987,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
}
}
activateProductOffer
Response
Returns a ProductOfferObjectType!
Example
Query
mutation activateProductOffer(
$offerId: ID!,
$activatedBy: ID!
) {
activateProductOffer(
offerId: $offerId,
activatedBy: $activatedBy
) {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
}
Variables
{
"offerId": "4",
"activatedBy": "4"
}
Response
{
"data": {
"activateProductOffer": {
"product_offer_id": "4",
"sku_id": "4",
"description": "xyz789",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 987.65,
"minimum_purchase_amount": 123.45,
"maximum_discount_amount": 123.45,
"usage_limit": 987,
"usage_count": 987,
"usage_limit_per_customer": 123,
"promo_code": "xyz789",
"category_filters": ["xyz789"],
"brand_filters": ["abc123"],
"applicable_channels": ["xyz789"],
"active": false,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
addBalanceToWallet
Response
Returns a RawCustomerWalletsDto!
Example
Query
mutation addBalanceToWallet(
$walletId: ID!,
$amount: Float!
) {
addBalanceToWallet(
walletId: $walletId,
amount: $amount
) {
customer_wallet_id
customer_id
customer_wallet_available_balance
customer_wallet_total_payments
customer_wallet_total_adjustments
customer_wallet_total_days_given
customer_wallet_total_points
customer_wallet_total_allocated
customer_wallet_lifetime_credits
customer_wallet_lifetime_debits
customer_wallet_currency
customer_wallet_created_at
customer_wallet_updated_at
}
}
Variables
{"walletId": "4", "amount": 987.65}
Response
{
"data": {
"addBalanceToWallet": {
"customer_wallet_id": "4",
"customer_id": 4,
"customer_wallet_available_balance": 987.65,
"customer_wallet_total_payments": 123.45,
"customer_wallet_total_adjustments": 123.45,
"customer_wallet_total_days_given": 987.65,
"customer_wallet_total_points": 987.65,
"customer_wallet_total_allocated": 987.65,
"customer_wallet_lifetime_credits": 987.65,
"customer_wallet_lifetime_debits": 123.45,
"customer_wallet_currency": "KES",
"customer_wallet_created_at": "2007-12-03T10:15:30Z",
"customer_wallet_updated_at": "2007-12-03T10:15:30Z"
}
}
}
addDiagnosticNotes
Response
Returns a RepairObjectType!
Example
Query
mutation addDiagnosticNotes(
$orderId: ID!,
$notes: String!
) {
addDiagnosticNotes(
orderId: $orderId,
notes: $notes
) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{"orderId": 4, "notes": "xyz789"}
Response
{
"data": {
"addDiagnosticNotes": {
"repair_id": "4",
"repair_display_id": "xyz789",
"requires_technician": true,
"inventory_id": "xyz789",
"customer_id": "abc123",
"original_sale_id": "abc123",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
}
}
addUserToGroup
Response
Returns a GroupMembershipResponse!
Arguments
| Name | Description |
|---|---|
input - GroupMembershipInput!
|
Example
Query
mutation addUserToGroup($input: GroupMembershipInput!) {
addUserToGroup(input: $input) {
success
message
group {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{"input": GroupMembershipInput}
Response
{
"data": {
"addUserToGroup": {
"success": false,
"message": "xyz789",
"group": GroupObjectType
}
}
}
approveProduct
Response
Returns a ProductObjectType!
Example
Query
mutation approveProduct(
$productId: ID!,
$approvedBy: ID!
) {
approveProduct(
productId: $productId,
approvedBy: $approvedBy
) {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Variables
{"productId": "4", "approvedBy": 4}
Response
{
"data": {
"approveProduct": {
"product_id": 4,
"name": "abc123",
"slug": "abc123",
"brand": "xyz789",
"model": "xyz789",
"category_id": "xyz789",
"category": CategoryObjectType,
"description": "abc123",
"long_description": "abc123",
"base_specifications": {},
"primary_image_url": "abc123",
"images": ["abc123"],
"video_url": "abc123",
"meta_title": "abc123",
"meta_description": "xyz789",
"keywords": ["xyz789"],
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
approveRefund
Description
Approve a pending refund
Response
Returns a RefundGraphQL!
Example
Query
mutation approveRefund(
$id: ID!,
$notes: String
) {
approveRefund(
id: $id,
notes: $notes
) {
refund_id
customer_id
sale_id
returns_request_id
order_id
loan_contract_id
source_payment_id
adjustment_id
refund_workflow_type
refund_amount
status
refund_method
transaction_reference
submitted_by
submitted_by_name
actor_id
approved_by
approved_by_name
customer_name
customer_phone
customer_official_id
approved_at
processed_at
completed_at
notes
rejection_reason
returns_request_type
created_at
updated_at
}
}
Variables
{
"id": "4",
"notes": "abc123"
}
Response
{
"data": {
"approveRefund": {
"refund_id": "4",
"customer_id": "xyz789",
"sale_id": "xyz789",
"returns_request_id": "xyz789",
"order_id": "abc123",
"loan_contract_id": "xyz789",
"source_payment_id": "abc123",
"adjustment_id": "abc123",
"refund_workflow_type": "RETURN",
"refund_amount": 123.45,
"status": "PENDING",
"refund_method": "MPESA",
"transaction_reference": "abc123",
"submitted_by": "abc123",
"submitted_by_name": "abc123",
"actor_id": "abc123",
"approved_by": "abc123",
"approved_by_name": "abc123",
"customer_name": "abc123",
"customer_phone": "xyz789",
"customer_official_id": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"processed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"notes": "xyz789",
"rejection_reason": "xyz789",
"returns_request_type": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
approveSku
Response
Returns a SkuObjectType!
Example
Query
mutation approveSku(
$skuId: ID!,
$approvedBy: ID!
) {
approveSku(
skuId: $skuId,
approvedBy: $approvedBy
) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{"skuId": "4", "approvedBy": 4}
Response
{
"data": {
"approveSku": {
"sku_id": 4,
"product_id": "abc123",
"condition_id": "xyz789",
"parent_sku_id": "xyz789",
"level": 987,
"level_attribute_key": "xyz789",
"level_attribute_value": "abc123",
"sku_code": "abc123",
"name": "xyz789",
"attributes": {},
"variant_specifications": {},
"msrp_price": 123.45,
"min_seller_price": 987.65,
"max_seller_price": 987.65,
"suggested_retail_price": 987.65,
"effective_price": 123.45,
"images": ["abc123"],
"weight_grams": 123,
"dimensions_mm": "abc123",
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
}
}
assignInventoryToContract
Response
Returns an InventoryObjectType!
Example
Query
mutation assignInventoryToContract(
$inventoryId: ID!,
$contractId: ID!,
$customerId: ID!
) {
assignInventoryToContract(
inventoryId: $inventoryId,
contractId: $contractId,
customerId: $customerId
) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{"inventoryId": 4, "contractId": 4, "customerId": 4}
Response
{
"data": {
"assignInventoryToContract": {
"inventory_id": "4",
"product_id": "abc123",
"sku_id": "abc123",
"condition_id": "abc123",
"seller_catalog_id": "abc123",
"seller_id": "xyz789",
"serial_number": "abc123",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": false,
"qc_report": QCReportType,
"qc_report_link": "abc123",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 987.65,
"contract_id": "xyz789",
"mdm_status": {},
"batch_number": "xyz789",
"location_id": "xyz789",
"inspection_report": "xyz789",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "abc123",
"supplier_code": "xyz789",
"supplier_order_reference": "xyz789",
"customer_id": "xyz789",
"sale_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
}
}
attachRolesToUser
Response
Returns a UserObjectType!
Arguments
| Name | Description |
|---|---|
input - AttachRolesToUserInput!
|
Example
Query
mutation attachRolesToUser($input: AttachRolesToUserInput!) {
attachRolesToUser(input: $input) {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
}
Variables
{"input": AttachRolesToUserInput}
Response
{
"data": {
"attachRolesToUser": {
"_id": 4,
"id": "abc123",
"keycloak_id": "xyz789",
"username": "xyz789",
"email": "abc123",
"first_name": "xyz789",
"surname": "xyz789",
"last_name": "xyz789",
"phone_number": "abc123",
"role": "abc123",
"enabled": false,
"user_type": "SYSTEM_ADMIN",
"is_internal": true,
"first_login": "2007-12-03T10:15:30Z",
"last_login": "2007-12-03T10:15:30Z",
"availability_status": "AVAILABLE",
"synced_at": "2007-12-03T10:15:30Z",
"group_memberships": ["abc123"],
"permissions": ["xyz789"],
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
audit_module_mutations
Description
Access audit module operations
Response
Returns an AuditModuleNamespace!
Example
Query
mutation audit_module_mutations {
audit_module_mutations {
auditLog {
auditLog {
...AuditLogObjectTypeFragment
}
auditLogByFilters {
...AuditLogObjectTypeFragment
}
auditLogCount
auditLogsCursor {
...CursorPaginatedAuditLogsFragment
}
auditLogsOffset {
...OffsetPaginatedAuditLogsFragment
}
createAuditLog {
...AuditLogObjectTypeFragment
}
createNote {
...AuditLogObjectTypeFragment
}
updateAuditLog {
...AuditLogObjectTypeFragment
}
updateAuditLogs
deleteAuditLog
deleteAuditLogs
}
}
}
Response
{
"data": {
"audit_module_mutations": {
"auditLog": AuditLogNamespace
}
}
}
calculateOnboardingFateGuide
Description
Calculate a fate guide decision for an application
Response
Returns an OnboardingFateGuideCalculationResponse!
Arguments
| Name | Description |
|---|---|
input - CalculateOnboardingFateGuideInput!
|
Example
Query
mutation calculateOnboardingFateGuide($input: CalculateOnboardingFateGuideInput!) {
calculateOnboardingFateGuide(input: $input) {
message
data {
_id
application_id
customer_id
crb_transaction_id
mobile_analysis_id
document_id
crb_score
crb_past_default_record
customer_age
big_loan_default
model_type
fate_guide_message
requires_recheck
sale_agent_id
available_plans
available_price_plans {
...PricePlanObjectTypeFragment
}
version
sku
type
active
devicePrice
durationMonths
age
loanHistory {
...FateGuideRuntimeLoanRecordTypeFragment
}
signals {
...FateGuideRuntimeSignalsTypeFragment
}
tier
sdiPct
maxCashPrice
maxCashPriceHigh
maxCashPriceMosaver
productBand
depositLevel
affordabilitySource
affordabilityValue
adjustedAffordability
recommendation
slopeBucket
slopeHaircutPct
bettingRatio
p2pShare
crbPositiveScore
cov
formulas
explanation {
...FateGuideRuntimeExplanationTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{"input": CalculateOnboardingFateGuideInput}
Response
{
"data": {
"calculateOnboardingFateGuide": {
"message": "xyz789",
"data": FateGuideScoresType
}
}
}
cancelRepair
Response
Returns a RepairObjectType!
Example
Query
mutation cancelRepair(
$orderId: ID!,
$reason: String!
) {
cancelRepair(
orderId: $orderId,
reason: $reason
) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{"orderId": 4, "reason": "xyz789"}
Response
{
"data": {
"cancelRepair": {
"repair_id": 4,
"repair_display_id": "xyz789",
"requires_technician": false,
"inventory_id": "xyz789",
"customer_id": "abc123",
"original_sale_id": "xyz789",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 123.45,
"spares_cost": 987.65,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
}
}
communication_module_mutations
Description
Access communication module mutations
Response
Returns a CommunicationModuleNamespace!
Example
Query
mutation communication_module_mutations {
communication_module_mutations {
communication {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
communicationsOffset {
data {
...CommunicationObjectTypeFragment
}
metadata {
...OffsetPaginationMetadataFragment
}
}
communicationsCursor {
data {
...CommunicationObjectTypeFragment
}
pagination {
...CursorPaginationMetadataFragment
}
}
createCommunication {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
bulkCreateCommunications {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
updateCommunication {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
retryCommunication
markNotificationAsRead {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
markAllNotificationsAsRead
trackNotificationClick {
_id
id
userId
channel
status
type
message {
...BaseMessageObjectTypeFragment
}
emailData {
...EmailDataObjectTypeFragment
}
smsData {
...SmsDataObjectTypeFragment
}
pushData {
...PushDataObjectTypeFragment
}
inAppData {
...InAppDataObjectTypeFragment
}
delivery {
...DeliveryInfoObjectTypeFragment
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
deleteCommunication
deleteManyCommunications
subscribeToTopic
unsubscribeFromTopic
subscribeToDefaultTopics
unsubscribeFromDefaultTopics
}
}
Response
{
"data": {
"communication_module_mutations": {
"communication": CommunicationObjectType,
"communicationsOffset": OffsetPaginatedCommunications,
"communicationsCursor": CursorPaginatedCommunications,
"createCommunication": CommunicationObjectType,
"bulkCreateCommunications": [
CommunicationObjectType
],
"updateCommunication": CommunicationObjectType,
"retryCommunication": true,
"markNotificationAsRead": CommunicationObjectType,
"markAllNotificationsAsRead": 987,
"trackNotificationClick": CommunicationObjectType,
"deleteCommunication": false,
"deleteManyCommunications": 987,
"subscribeToTopic": false,
"unsubscribeFromTopic": false,
"subscribeToDefaultTopics": true,
"unsubscribeFromDefaultTopics": false
}
}
}
completeRefund
Description
Mark a refund as completed (payment confirmed)
Response
Returns a RefundGraphQL!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
refund_method - RefundMethod
|
|
transaction_reference - String
|
Example
Query
mutation completeRefund(
$id: ID!,
$refund_method: RefundMethod,
$transaction_reference: String
) {
completeRefund(
id: $id,
refund_method: $refund_method,
transaction_reference: $transaction_reference
) {
refund_id
customer_id
sale_id
returns_request_id
order_id
loan_contract_id
source_payment_id
adjustment_id
refund_workflow_type
refund_amount
status
refund_method
transaction_reference
submitted_by
submitted_by_name
actor_id
approved_by
approved_by_name
customer_name
customer_phone
customer_official_id
approved_at
processed_at
completed_at
notes
rejection_reason
returns_request_type
created_at
updated_at
}
}
Variables
{
"id": 4,
"refund_method": "MPESA",
"transaction_reference": "abc123"
}
Response
{
"data": {
"completeRefund": {
"refund_id": 4,
"customer_id": "xyz789",
"sale_id": "abc123",
"returns_request_id": "xyz789",
"order_id": "abc123",
"loan_contract_id": "xyz789",
"source_payment_id": "abc123",
"adjustment_id": "xyz789",
"refund_workflow_type": "RETURN",
"refund_amount": 987.65,
"status": "PENDING",
"refund_method": "MPESA",
"transaction_reference": "abc123",
"submitted_by": "xyz789",
"submitted_by_name": "abc123",
"actor_id": "xyz789",
"approved_by": "xyz789",
"approved_by_name": "xyz789",
"customer_name": "xyz789",
"customer_phone": "abc123",
"customer_official_id": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"processed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"notes": "abc123",
"rejection_reason": "xyz789",
"returns_request_type": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
completeRepair
Response
Returns a RepairObjectType!
Arguments
| Name | Description |
|---|---|
orderId - ID!
|
|
outtakeDetails - RepairOuttakeInput
|
Example
Query
mutation completeRepair(
$orderId: ID!,
$outtakeDetails: RepairOuttakeInput
) {
completeRepair(
orderId: $orderId,
outtakeDetails: $outtakeDetails
) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{
"orderId": "4",
"outtakeDetails": RepairOuttakeInput
}
Response
{
"data": {
"completeRepair": {
"repair_id": 4,
"repair_display_id": "abc123",
"requires_technician": true,
"inventory_id": "abc123",
"customer_id": "abc123",
"original_sale_id": "abc123",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 123.45,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
}
}
config_module_mutations
Description
Access config module mutations
Response
Returns a ConfigModuleNamespace!
Example
Query
mutation config_module_mutations {
config_module_mutations {
configs {
byId {
...ConfigTypeFragment
}
byFilters {
...ConfigTypeFragment
}
count
value {
...ConfigValueResponseFragment
}
exists {
...ConfigExistsResponseFragment
}
offsetPaginated {
...ConfigOffsetPaginatedResponseFragment
}
cursorPaginated {
...ConfigCursorPaginatedResponseFragment
}
clientConfigs
byCategory
inventory {
...InventoryUiConfigTypeFragment
}
featureFlags
isFeatureEnabled {
...FeatureStatusResponseFragment
}
withHistory {
...ConfigWithHistoryFragment
}
create {
...ConfigTypeFragment
}
updateById {
...ConfigTypeFragment
}
updateMany
deleteById
deleteMany
bulkCreate {
...BulkConfigMutationResponseFragment
}
delete {
...ConfigDeleteResponseFragment
}
publish {
...ConfigMutationResponseFragment
}
rollback {
...ConfigMutationResponseFragment
}
clearCache {
...CacheClearedFragment
}
}
userRoleConfigs {
value {
...UserRoleConfigValueResponseFragment
}
myConfigs {
...ConfigTypeFragment
}
roleConfigs {
...ConfigTypeFragment
}
setMyConfig {
...ConfigTypeFragment
}
setRoleConfig {
...ConfigTypeFragment
}
deleteMyConfig
deleteRoleConfig
}
sharedResources {
mySharedResources {
...OffsetPaginatedSharedResourcesFragment
}
sharedWithMe {
...OffsetPaginatedSharedResourcesFragment
}
sharedResource {
...SharedResourceObjectTypeFragment
}
sharedResourcesByKey {
...SharedResourceObjectTypeFragment
}
createSharedResource {
...SharedResourceObjectTypeFragment
}
updateSharedResource {
...SharedResourceObjectTypeFragment
}
deleteSharedResource
addUsersToSharedResource {
...SharedResourceObjectTypeFragment
}
}
}
}
Response
{
"data": {
"config_module_mutations": {
"configs": ConfigsNamespace,
"userRoleConfigs": UserRoleConfigsNamespace,
"sharedResources": SharedResourcesNamespace
}
}
}
confirmDelivery
Response
Returns a DeliveryObjectType!
Arguments
| Name | Description |
|---|---|
input - SubmitDeliveryInput!
|
Example
Query
mutation confirmDelivery($input: SubmitDeliveryInput!) {
confirmDelivery(input: $input) {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
street
city
state
postal_code
country
geo {
...GeoLocationFragment
}
}
tracking_number
provider_info {
provider_name
external_id
tracking_url
}
proof_of_delivery {
images
signature
otp
submitted_otp
otp_expiry_time
match
payment_reference
failed_delivery_reason
}
delivery_notes
destination_location {
lat
lng
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
calls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
latestAnsweredCall {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
created_at
updated_at
deliveryItems {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
}
}
Variables
{"input": SubmitDeliveryInput}
Response
{
"data": {
"confirmDelivery": {
"delivery_id": 4,
"order_id": "4",
"seller_id": "4",
"assigned_rider_id": "4",
"delivery_status": "PENDING",
"delivery_address": DeliveryAddress,
"tracking_number": "xyz789",
"provider_info": ProviderInfo,
"proof_of_delivery": ProofOfDelivery,
"delivery_notes": "xyz789",
"destination_location": GeoLocation,
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"metadata": {},
"assigned_rider": UserObjectType,
"seller": SellerObjectType,
"order": OrderObjectType,
"items": [DeliveryItemObjectType],
"calls": [DeliveryCallObjectType],
"latestAnsweredCall": DeliveryCallObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"deliveryItems": [DeliveryItemObjectType]
}
}
}
createApplication
Description
Create a new application
Response
Returns an ApplicationEntityGraphQL!
Arguments
| Name | Description |
|---|---|
input - ApplicationEntityInput!
|
Example
Query
mutation createApplication($input: ApplicationEntityInput!) {
createApplication(input: $input) {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
mpesa_statement
bank_statement
back_id
front_id
selfie
}
customer {
personal_info {
...ApplicationPersonalInfoGraphQLFragment
}
identification {
...ApplicationIdentificationGraphQLFragment
}
location {
...ApplicationLocationGraphQLFragment
}
employment {
...ApplicationEmploymentGraphQLFragment
}
credit_history {
...ApplicationCreditHistoryGraphQLFragment
}
product {
...ApplicationProductGraphQLFragment
}
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
previous_next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
credit {
credit
credit_process
pending_kyc_tags
system_crb_score
user_crb_score
final_risk_score
status
prospect_status
resubmission_pending_review
customer_bucket
customer_tag
prospect_model
check_by_risk_model
fate_guide
risk_flag
combined_risk_flag
deposit_requirement
advice_customer
customer_credit_fate_reason
last_modified_credit_status
approved_at
product_id
product_name
product_inventory_id
price_plan_id
price_plan_code
price_plan_name
product_cash_price
resubmission_link
initial_weeks
risk_model
validity {
...ApplicationValidityGraphQLFragment
}
metadata
exemption_record {
...ApplicationExemptionRecordGraphQLFragment
}
}
risk {
risk_flag
previous_loans
high_deposit_overide
}
delivery {
delivery_id
rider_id
mpesa_code
delivery_code
rider_submitted_otp
otp_expiry_time
location {
...ApplicationLocationGraphQLFragment
}
front_id
back_id
delivery_status
notes
order_processing {
...SalesProcessingJobStatusGraphQLFragment
}
sale_creation {
...SalesProcessingJobStatusGraphQLFragment
}
}
legacy_references {
lead_id
prospect_id
application_id
}
metadata
timeline {
lead_created
lead_updated
prospect_created
prospect_updated
customer_created
ready_for_scoring
ready_for_calling
ready_for_decision
called_at
scored_at
decisioned_at
device_needed
liveness_created_date
ready_for_screening
screened_at
paused_financial_statement_at
prospect_submitted_at
resubmission_submitted_at
scoring_started_at
first_scored_at
calling_started_at
first_called_at
decision_started_at
first_decisioned_at
last_modified_credit_status_at
}
references {
lead_id
prospect_id
customer_id
crb_transaction_id
resubmission_id
fate_guide_id
final_fate_guide_id
order_id
}
validation_references {
customer_iprs
customer_kra
customer_mpesa
customer_duplicate
nok_iprs
nok_mpesa
nok_duplicate
risk
mpesa_statement
liveness
pre_screening
}
application_type
normal_high_deposit
activeValidationRecords {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
credit_call {
call_details_id
call_type
credit_call_link
}
call_disposition_id
submission_source
leads_screens {
customer
product
consent
termsAndConditions
kycDocuments
creditQuestions
}
prospects_screens {
liveness
nextOfKin
product
images
}
liveness_check {
method
link
}
consent {
sales_approval
terms_and_conditions
source_of_information
verified
verification_phone
referrer_name
created_at
otp
verified_at
}
staff {
scorer {
...ApplicationStaffMemberGraphQLFragment
}
caller {
...ApplicationStaffMemberGraphQLFragment
}
decisioner {
...ApplicationStaffMemberGraphQLFragment
}
sales_agent {
...ApplicationSalesAgentGraphQLFragment
}
submitting_agent {
...ApplicationSalesAgentGraphQLFragment
}
screener {
...ApplicationSalesAgentGraphQLFragment
}
seller {
...ApplicationSalesAgentGraphQLFragment
}
sfm {
...ApplicationSalesAgentGraphQLFragment
}
}
creditProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
customerProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
salesAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
submittingAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
sfmAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
active_resubmission {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
createdAt
updatedAt
callDisposition {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
validation_records {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
active_validation_records {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
creditCallDetails {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
activeCreditPricePlan {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
}
}
Variables
{"input": ApplicationEntityInput}
Response
{
"data": {
"createApplication": {
"_id": 4,
"customer_id": "xyz789",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["abc123"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "abc123",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [
ValidationRecordGraphQLEntity
],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
}
}
createApplicationCallDetail
Description
Create a new application call detail record
Response
Returns an ApplicationCallDetailsType!
Arguments
| Name | Description |
|---|---|
input - CreateApplicationCallDetailsInput!
|
Example
Query
mutation createApplicationCallDetail($input: CreateApplicationCallDetailsInput!) {
createApplicationCallDetail(input: $input) {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
call_status
notes
relation
consent
idNumber
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
}
Variables
{"input": CreateApplicationCallDetailsInput}
Response
{
"data": {
"createApplicationCallDetail": {
"_id": 4,
"application_id": 4,
"status": "abc123",
"notes": "xyz789",
"agent_name": "xyz789",
"caller_id": "xyz789",
"delivery_location_type": "xyz789",
"priority": "xyz789",
"call_date": "2007-12-03T10:15:30Z",
"follow_up_required": true,
"customer_location": "xyz789",
"employer_info": "xyz789",
"employment_details": "xyz789",
"delivery_location": "abc123",
"product_choice": "xyz789",
"confirmed_price_plan": "abc123",
"geo_address": "xyz789",
"delivery_or_collection_location": "xyz789",
"other_delivery_notes": "abc123",
"call_type": "NOK",
"call_outcome": "xyz789",
"call_notes": "abc123",
"call_ended_at": "2007-12-03T10:15:30Z",
"call_started_at": "2007-12-03T10:15:30Z",
"call_duration_seconds": 123.45,
"nok": CallDetailsNokType,
"customer_general_location": "xyz789",
"preferred_delivery_day": "2007-12-03T10:15:30Z",
"preferred_delivery_slot": "xyz789",
"work_location": "abc123",
"work_location_link": "abc123",
"screening_consent": "abc123",
"accept_loan_terms": "abc123",
"extras": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
createCallDisposition
Description
Create a new call disposition
Response
Returns a CallDispositionType!
Arguments
| Name | Description |
|---|---|
input - CreateCallDispositionInput!
|
Example
Query
mutation createCallDisposition($input: CreateCallDispositionInput!) {
createCallDisposition(input: $input) {
_id
application_id
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
}
Variables
{"input": CreateCallDispositionInput}
Response
{
"data": {
"createCallDisposition": {
"_id": 4,
"application_id": "4",
"application": ApplicationEntityGraphQL,
"disposition": "abc123",
"notes": "abc123",
"priority": "xyz789",
"next_call_date": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
createCategory
Response
Returns a CategoryObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateCategoryInput!
|
Example
Query
mutation createCategory($input: CreateCategoryInput!) {
createCategory(input: $input) {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"input": CreateCategoryInput}
Response
{
"data": {
"createCategory": {
"category_id": "4",
"name": "xyz789",
"slug": "xyz789",
"description": "abc123",
"icon_url": "abc123",
"image_url": "abc123",
"required_attributes": {},
"sku_attributes": {},
"parent_category_id": "xyz789",
"level": 987.65,
"path": "xyz789",
"sort_order": 987.65,
"is_active": false,
"meta_title": "xyz789",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
createCommission
Response
Returns a CommissionObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateCommissionInput!
|
Example
Query
mutation createCommission($input: CreateCommissionInput!) {
createCommission(input: $input) {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
overrides {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
...AgentProfileObjectTypeFragment
}
commission_rule {
...CommissionObjectTypeFragment
}
}
}
}
Variables
{"input": CreateCommissionInput}
Response
{
"data": {
"createCommission": {
"id": "4",
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"attribute_type": "ALL",
"commission_value_type": "FLAT",
"sku_id": "xyz789",
"min_price": 123.45,
"max_price": 123.45,
"product_commission": 123.45,
"loan_commission": 987.65,
"cash_commission": 123.45,
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sku": SkuObjectType,
"overrides": [CommissionOverrideObjectType]
}
}
}
createCommissionOverride
Response
Returns a CommissionOverrideObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateCommissionOverrideInput!
|
Example
Query
mutation createCommissionOverride($input: CreateCommissionOverrideInput!) {
createCommissionOverride(input: $input) {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
commission_rule {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
...SkuObjectTypeFragment
}
overrides {
...CommissionOverrideObjectTypeFragment
}
}
}
}
Variables
{"input": CreateCommissionOverrideInput}
Response
{
"data": {
"createCommissionOverride": {
"id": "4",
"agent_profile_id": "abc123",
"commission_rule_id": "xyz789",
"product_commission": 987.65,
"loan_commission": 123.45,
"cash_commission": 987.65,
"commission_value_type": "FLAT",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"agent_profile": AgentProfileObjectType,
"commission_rule": CommissionObjectType
}
}
}
createCondition
Response
Returns a ConditionObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateConditionInput!
|
Example
Query
mutation createCondition($input: CreateConditionInput!) {
createCondition(input: $input) {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
Variables
{"input": CreateConditionInput}
Response
{
"data": {
"createCondition": {
"condition_id": "4",
"grade": "abc123",
"name": "xyz789",
"sort_order": 987,
"color_hex": "abc123",
"badge_icon": "xyz789",
"criteria": {},
"description": "xyz789",
"internal_notes": "abc123",
"verification_requirements": {},
"warranty_months": 987,
"price_multiplier": 987.65,
"financing_impact": {},
"seller_requirements": {},
"is_active": true,
"available_for_sellers": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
createCustomer
Response
Returns a RawCustomersDto!
Arguments
| Name | Description |
|---|---|
input - CreateRawCustomersInput!
|
Example
Query
mutation createCustomer($input: CreateRawCustomersInput!) {
createCustomer(input: $input) {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
middle_name
gender
date_of_birth
secondary_phone
marital_status
application_id
customer_source
customer_source_id
}
organization_details {
trading_name
organization_type
registration_date
tax_id
industry_sector
number_of_employees
application_id
customer_source
customer_source_id
}
contact_person {
name
title
phone
email
}
kyc_documents {
selfie_url
id_front_url
id_back_url
certificate_of_incorporation_url
tax_certificate_url
business_permit_url
associated_phone_numbers
}
next_of_kin {
first_name
other_name
relationship
id_type
id_number
phone_primary
phone_secondary
primary_on_whatsapp
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
latestApplication {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
}
}
Variables
{"input": CreateRawCustomersInput}
Response
{
"data": {
"createCustomer": {
"customer_id": "4",
"customer_created_at": "2007-12-03T10:15:30Z",
"customer_type": "INDIVIDUAL",
"customer_phone_number": "abc123",
"official_id_number": "xyz789",
"country": "abc123",
"county": "abc123",
"sub_county": "abc123",
"ward": "xyz789",
"town": "abc123",
"landmark": "xyz789",
"customer_email_address": "abc123",
"customer_status": "ACTIVE",
"display_name": "abc123",
"customer_first_name": "abc123",
"customer_surname_name": "abc123",
"organization_name": "abc123",
"organization_registration_number": "abc123",
"individual_details": IndividualDetailsDto,
"organization_details": OrganizationDetailsDto,
"contact_person": ContactPersonDto,
"kyc_documents": KycDocumentsDto,
"next_of_kin": NextOfKinDto,
"total_loans_taken": 123.45,
"active_loans_count": 987.65,
"completed_loans_count": 123.45,
"has_defaulted": true,
"current_credit_score": "abc123",
"metadata": {},
"customer_updated_at": "2007-12-03T10:15:30Z",
"keycloak_id": "abc123",
"referral_code": "abc123",
"applications": [ApplicationEntityGraphQL],
"latestApplication": ApplicationEntityGraphQL
}
}
}
createCustomerFromApplication
Response
Returns a RawCustomersDto!
Arguments
| Name | Description |
|---|---|
input - CreateCustomerFromApplicationInput!
|
Example
Query
mutation createCustomerFromApplication($input: CreateCustomerFromApplicationInput!) {
createCustomerFromApplication(input: $input) {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
middle_name
gender
date_of_birth
secondary_phone
marital_status
application_id
customer_source
customer_source_id
}
organization_details {
trading_name
organization_type
registration_date
tax_id
industry_sector
number_of_employees
application_id
customer_source
customer_source_id
}
contact_person {
name
title
phone
email
}
kyc_documents {
selfie_url
id_front_url
id_back_url
certificate_of_incorporation_url
tax_certificate_url
business_permit_url
associated_phone_numbers
}
next_of_kin {
first_name
other_name
relationship
id_type
id_number
phone_primary
phone_secondary
primary_on_whatsapp
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
latestApplication {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
}
}
Variables
{"input": CreateCustomerFromApplicationInput}
Response
{
"data": {
"createCustomerFromApplication": {
"customer_id": 4,
"customer_created_at": "2007-12-03T10:15:30Z",
"customer_type": "INDIVIDUAL",
"customer_phone_number": "abc123",
"official_id_number": "xyz789",
"country": "abc123",
"county": "abc123",
"sub_county": "xyz789",
"ward": "xyz789",
"town": "xyz789",
"landmark": "xyz789",
"customer_email_address": "xyz789",
"customer_status": "ACTIVE",
"display_name": "xyz789",
"customer_first_name": "xyz789",
"customer_surname_name": "xyz789",
"organization_name": "abc123",
"organization_registration_number": "abc123",
"individual_details": IndividualDetailsDto,
"organization_details": OrganizationDetailsDto,
"contact_person": ContactPersonDto,
"kyc_documents": KycDocumentsDto,
"next_of_kin": NextOfKinDto,
"total_loans_taken": 987.65,
"active_loans_count": 987.65,
"completed_loans_count": 987.65,
"has_defaulted": false,
"current_credit_score": "abc123",
"metadata": {},
"customer_updated_at": "2007-12-03T10:15:30Z",
"keycloak_id": "abc123",
"referral_code": "xyz789",
"applications": [ApplicationEntityGraphQL],
"latestApplication": ApplicationEntityGraphQL
}
}
}
createCustomerReferral
Response
Returns a CustomerReferralDto!
Arguments
| Name | Description |
|---|---|
input - CreateCustomerReferralInput!
|
Example
Query
mutation createCustomerReferral($input: CreateCustomerReferralInput!) {
createCustomerReferral(input: $input) {
referral_id
referrer_customer_id
referee_customer_id
referee_customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
referral_code_used
referral_status
validation_due_date
validated_at
rewards_processed_at
referee_loan_contract_id
referee_opening_date
payment_adjustment_id
referrer_airtime_transaction_id
referee_airtime_transaction_id
created_by
created_at
updated_by
updated_at
}
}
Variables
{"input": CreateCustomerReferralInput}
Response
{
"data": {
"createCustomerReferral": {
"referral_id": 4,
"referrer_customer_id": "4",
"referee_customer_id": 4,
"referee_customer": RawCustomersDto,
"referral_code_used": "abc123",
"referral_status": "INCOMPLETE",
"validation_due_date": "2007-12-03T10:15:30Z",
"validated_at": "2007-12-03T10:15:30Z",
"rewards_processed_at": "2007-12-03T10:15:30Z",
"referee_loan_contract_id": "abc123",
"referee_opening_date": "2007-12-03T10:15:30Z",
"payment_adjustment_id": "xyz789",
"referrer_airtime_transaction_id": "xyz789",
"referee_airtime_transaction_id": "xyz789",
"created_by": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_by": "abc123",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
createCustomerWallet
Response
Returns a RawCustomerWalletsDto!
Arguments
| Name | Description |
|---|---|
input - CreateRawCustomerWalletsInput!
|
Example
Query
mutation createCustomerWallet($input: CreateRawCustomerWalletsInput!) {
createCustomerWallet(input: $input) {
customer_wallet_id
customer_id
customer_wallet_available_balance
customer_wallet_total_payments
customer_wallet_total_adjustments
customer_wallet_total_days_given
customer_wallet_total_points
customer_wallet_total_allocated
customer_wallet_lifetime_credits
customer_wallet_lifetime_debits
customer_wallet_currency
customer_wallet_created_at
customer_wallet_updated_at
}
}
Variables
{"input": CreateRawCustomerWalletsInput}
Response
{
"data": {
"createCustomerWallet": {
"customer_wallet_id": "4",
"customer_id": 4,
"customer_wallet_available_balance": 987.65,
"customer_wallet_total_payments": 123.45,
"customer_wallet_total_adjustments": 123.45,
"customer_wallet_total_days_given": 987.65,
"customer_wallet_total_points": 987.65,
"customer_wallet_total_allocated": 987.65,
"customer_wallet_lifetime_credits": 123.45,
"customer_wallet_lifetime_debits": 123.45,
"customer_wallet_currency": "KES",
"customer_wallet_created_at": "2007-12-03T10:15:30Z",
"customer_wallet_updated_at": "2007-12-03T10:15:30Z"
}
}
}
createDelivery
Response
Returns [DeliveryObjectType!]!
Arguments
| Name | Description |
|---|---|
orderId - ID!
|
Example
Query
mutation createDelivery($orderId: ID!) {
createDelivery(orderId: $orderId) {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
street
city
state
postal_code
country
geo {
...GeoLocationFragment
}
}
tracking_number
provider_info {
provider_name
external_id
tracking_url
}
proof_of_delivery {
images
signature
otp
submitted_otp
otp_expiry_time
match
payment_reference
failed_delivery_reason
}
delivery_notes
destination_location {
lat
lng
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
calls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
latestAnsweredCall {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
created_at
updated_at
deliveryItems {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
}
}
Variables
{"orderId": 4}
Response
{
"data": {
"createDelivery": [
{
"delivery_id": "4",
"order_id": "4",
"seller_id": "4",
"assigned_rider_id": "4",
"delivery_status": "PENDING",
"delivery_address": DeliveryAddress,
"tracking_number": "xyz789",
"provider_info": ProviderInfo,
"proof_of_delivery": ProofOfDelivery,
"delivery_notes": "abc123",
"destination_location": GeoLocation,
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"metadata": {},
"assigned_rider": UserObjectType,
"seller": SellerObjectType,
"order": OrderObjectType,
"items": [DeliveryItemObjectType],
"calls": [DeliveryCallObjectType],
"latestAnsweredCall": DeliveryCallObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"deliveryItems": [DeliveryItemObjectType]
}
]
}
}
createDeliveryCall
Response
Returns a DeliveryCallObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateDeliveryCallInput!
|
Example
Query
mutation createDeliveryCall($input: CreateDeliveryCallInput!) {
createDeliveryCall(input: $input) {
call_id
order_id
called_by
caller {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
confirmed_delivery_location {
street
city
state
postal_code
country
geo {
...DeliveryCallGeoFragment
}
}
spec_preference {
colour
sim_card_preference
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
}
}
Variables
{"input": CreateDeliveryCallInput}
Response
{
"data": {
"createDeliveryCall": {
"call_id": "4",
"order_id": "4",
"called_by": 4,
"caller": UserObjectType,
"confirmed_delivery_location": ConfirmedDeliveryLocationObjectType,
"spec_preference": SpecPreferenceObjectType,
"confirmed_delivery_date": "abc123",
"confirmed_delivery_slot": "MORNING",
"call_time": "2007-12-03T10:15:30Z",
"outcome": "CALL_BACK",
"confirmed_delivery_type": "DELIVERY",
"confirmed_delivery_type_name": "MO",
"notes": "xyz789",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"order": OrderObjectType
}
}
}
createDeliveryItem
Response
Returns a DeliveryItemObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateDeliveryItemInput!
|
Example
Query
mutation createDeliveryItem($input: CreateDeliveryItemInput!) {
createDeliveryItem(input: $input) {
id
delivery_id
order_item_id
quantity_shipped
delivery {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
order_item {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
}
}
Variables
{"input": CreateDeliveryItemInput}
Response
{
"data": {
"createDeliveryItem": {
"id": 4,
"delivery_id": "4",
"order_item_id": 4,
"quantity_shipped": 987.65,
"delivery": DeliveryObjectType,
"order_item": OrderItemObjectType
}
}
}
createDowngradeRequest
Description
Create a new downgrade request
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
input - CreateDowngradeRequestInput!
|
Example
Query
mutation createDowngradeRequest($input: CreateDowngradeRequestInput!) {
createDowngradeRequest(input: $input) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{"input": CreateDowngradeRequestInput}
Response
{
"data": {
"createDowngradeRequest": {
"_id": 4,
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "abc123",
"sale_id": "xyz789",
"ticket_id": "abc123",
"current_device_id": "abc123",
"target_device_model": "xyz789",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "abc123",
"cxc_notes": "abc123",
"submitted_by": "xyz789",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 987.65,
"amount_paid_to_date": 123.45,
"current_device_deposit": 123.45,
"new_device_deposit": 123.45,
"new_device_price": 987.65,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": false,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "xyz789",
"lane_owner": "xyz789",
"superseded_by_request_id": "xyz789",
"supersedes_request_id": "abc123",
"workflow_switch_reason": "abc123",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": false,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "abc123",
"fulfillment_mode": "xyz789",
"mpesa_reference": "xyz789",
"upgrade_policy_mode": "abc123",
"customer_age_weeks_at_decision": 987,
"new_credit_sale_id": 4,
"new_credit_sale_activated_at": "xyz789",
"topup_confirmed_at": "xyz789",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": false,
"pending_detach_inventory_id": 4,
"manual_detach_detached_at": "xyz789",
"manual_detach_inventory_id": 4,
"linked_application_id": 4
}
}
}
createDraftPricePlan
Response
Returns a PricePlanObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateDraftPricePlanInput!
|
Example
Query
mutation createDraftPricePlan($input: CreateDraftPricePlanInput!) {
createDraftPricePlan(input: $input) {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
within_months
discount_percent
}
status
is_private
version
metadata
created_at
updated_at
tier {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
versions {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"input": CreateDraftPricePlanInput}
Response
{
"data": {
"createDraftPricePlan": {
"id": 4,
"tier_id": "xyz789",
"parent_plan_id": "xyz789",
"code": "xyz789",
"name": "abc123",
"min_device_value": 987.65,
"max_device_value": 987.65,
"deposit_percent": 123.45,
"deposit_percent_high": 987.65,
"subsequent_loan_discount_percent": 987.65,
"loan_multiplier": 987.65,
"loan_multiplier_high": 987.65,
"mocare_percent": 123.45,
"duration_months": 123,
"duration_months_high": 123,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": false,
"version": 987,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
}
}
createFlashSale
Response
Returns a FlashSaleObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateFlashSaleInput!
|
Example
Query
mutation createFlashSale($input: CreateFlashSaleInput!) {
createFlashSale(input: $input) {
flash_sale_id
title
slug
description
start_date
end_date
status
max_quantity
sold_quantity
min_discount_percentage
is_featured
banner_image
icon_url
countdown_display
priority
participating_sellers
performance_metrics
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"input": CreateFlashSaleInput}
Response
{
"data": {
"createFlashSale": {
"flash_sale_id": 4,
"title": "xyz789",
"slug": "abc123",
"description": "abc123",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 123,
"sold_quantity": 987,
"min_discount_percentage": 987.65,
"is_featured": false,
"banner_image": "xyz789",
"icon_url": "abc123",
"countdown_display": false,
"priority": 987,
"participating_sellers": ["xyz789"],
"performance_metrics": {},
"meta_title": "abc123",
"meta_description": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
createFlashSaleItem
Response
Returns a FlashSaleItemObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateFlashSaleItemInput!
|
Example
Query
mutation createFlashSaleItem($input: CreateFlashSaleItemInput!) {
createFlashSaleItem(input: $input) {
flash_sale_item_id
flash_sale_id
seller_catalog_id
product_id
sku_id
original_price
flash_sale_price
discount_percentage
stock_allocated
stock_sold
stock_remaining
max_per_customer
display_priority
is_featured
badge_text
created_at
}
}
Variables
{"input": CreateFlashSaleItemInput}
Response
{
"data": {
"createFlashSaleItem": {
"flash_sale_item_id": 4,
"flash_sale_id": "abc123",
"seller_catalog_id": "xyz789",
"product_id": "abc123",
"sku_id": "xyz789",
"original_price": 123.45,
"flash_sale_price": 123.45,
"discount_percentage": 987.65,
"stock_allocated": 987,
"stock_sold": 987,
"stock_remaining": 987,
"max_per_customer": 987,
"display_priority": 987,
"is_featured": false,
"badge_text": "abc123",
"created_at": "2007-12-03T10:15:30Z"
}
}
}
createGroup
Response
Returns a GroupObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateGroupInput!
|
Example
Query
mutation createGroup($input: CreateGroupInput!) {
createGroup(input: $input) {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
childrenDetails {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{"input": CreateGroupInput}
Response
{
"data": {
"createGroup": {
"_id": "xyz789",
"keycloak_id": "abc123",
"name": "abc123",
"realm": "abc123",
"path": "abc123",
"description": "abc123",
"attributes": {},
"parent_id": "xyz789",
"children": ["xyz789"],
"level": 123,
"member_keycloak_ids": ["xyz789"],
"member_count": 123,
"synced_at": "2007-12-03T10:15:30Z",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"parent": GroupObjectType,
"childrenDetails": [GroupObjectType]
}
}
}
createInventory
Response
Returns an InventoryCreationResult!
Arguments
| Name | Description |
|---|---|
input - CreateInventoryInput!
|
Example
Query
mutation createInventory($input: CreateInventoryInput!) {
createInventory(input: $input) {
... on InventoryObjectType {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
... on BulkInventoryResult {
success {
...InventoryObjectTypeFragment
}
failed {
...BulkInventoryErrorFragment
}
}
}
}
Variables
{"input": CreateInventoryInput}
Response
{"data": {"createInventory": InventoryObjectType}}
createInventoryAllocation
Response
Returns an InventoryAllocationObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateInventoryAllocationInput!
|
Example
Query
mutation createInventoryAllocation($input: CreateInventoryAllocationInput!) {
createInventoryAllocation(input: $input) {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
created_at
updated_at
}
}
Variables
{"input": CreateInventoryAllocationInput}
Response
{
"data": {
"createInventoryAllocation": {
"inventory_allocation_id": "4",
"order_item_id": 4,
"inventory_id": 4,
"quantity_allocated": 987.65,
"allocation_status": "RESERVED",
"allocation_date": "2007-12-03T10:15:30Z",
"expiry_date": "2007-12-03T10:15:30Z",
"metadata": {},
"order_item": OrderItemObjectType,
"inventory": InventoryObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
createInventoryLocation
Response
Returns an InventoryLocationObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateInventoryLocationInput!
|
Example
Query
mutation createInventoryLocation($input: CreateInventoryLocationInput!) {
createInventoryLocation(input: $input) {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
lat
lng
}
location_details {
country
county
sub_county
ward
town
landmark
gps_coordinates {
...InventoryCoordinatesObjectTypeFragment
}
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
Variables
{"input": CreateInventoryLocationInput}
Response
{
"data": {
"createInventoryLocation": {
"inventory_location_id": 4,
"location_name": "abc123",
"location_type": "TRANSIT_INBOUND",
"location_code": "abc123",
"address": "abc123",
"city": "xyz789",
"region": "abc123",
"coordinates": InventoryCoordinatesObjectType,
"location_details": InventoryLocationDetailsObjectType,
"user_id": "xyz789",
"manager_id": "abc123",
"capacity": 987,
"current_stock": 987,
"is_active": true,
"operating_hours": {},
"seller_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
createOrder
Response
Returns an OrderObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateOrderInput!
|
Example
Query
mutation createOrder($input: CreateOrderInput!) {
createOrder(input: $input) {
order_id
customer_id
order_status
payment_status
shipping_address {
street
city
state
postal_code
country
geo {
...OrderGeoFragment
}
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
orderItems {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
deliveries {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
sales {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
deliveryCalls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
}
}
Variables
{"input": CreateOrderInput}
Response
{
"data": {
"createOrder": {
"order_id": "4",
"customer_id": "4",
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "xyz789",
"sub_total": 123.45,
"total_discount": 123.45,
"delivery_fee": 123.45,
"service_fee": 987.65,
"tax_amount": 123.45,
"total_amount": 123.45,
"application_id": "xyz789",
"sale_agent_id": "xyz789",
"submitting_agent_id": "abc123",
"manual_override": true,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
}
}
createOrderItem
Response
Returns an OrderItemObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateOrderItemInput!
|
Example
Query
mutation createOrderItem($input: CreateOrderItemInput!) {
createOrderItem(input: $input) {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
delivery_items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
inventory_allocations {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
...OrderItemObjectTypeFragment
}
inventory {
...InventoryObjectTypeFragment
}
created_at
updated_at
}
inventory_allocation {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
...OrderItemObjectTypeFragment
}
inventory {
...InventoryObjectTypeFragment
}
created_at
updated_at
}
}
}
Variables
{"input": CreateOrderItemInput}
Response
{
"data": {
"createOrderItem": {
"order_item_id": "4",
"order_id": "4",
"seller_id": 4,
"item_type": "PRODUCT",
"catalog_id": 4,
"quantity": 123.45,
"unit_price": 987.65,
"discount_amount": 123.45,
"adjustments": {},
"subtotal": 123.45,
"purchase_type": "CASH",
"status": "abc123",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sellerCatalog": SellerCatalogObjectType,
"order": OrderObjectType,
"delivery_items": [DeliveryItemObjectType],
"inventory_allocations": [
InventoryAllocationObjectType
],
"inventory_allocation": InventoryAllocationObjectType
}
}
}
createPricePlan
Response
Returns a PricePlanObjectType!
Arguments
| Name | Description |
|---|---|
input - CreatePricePlanInput!
|
Example
Query
mutation createPricePlan($input: CreatePricePlanInput!) {
createPricePlan(input: $input) {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
within_months
discount_percent
}
status
is_private
version
metadata
created_at
updated_at
tier {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
versions {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"input": CreatePricePlanInput}
Response
{
"data": {
"createPricePlan": {
"id": 4,
"tier_id": "abc123",
"parent_plan_id": "abc123",
"code": "xyz789",
"name": "xyz789",
"min_device_value": 987.65,
"max_device_value": 123.45,
"deposit_percent": 123.45,
"deposit_percent_high": 987.65,
"subsequent_loan_discount_percent": 123.45,
"loan_multiplier": 987.65,
"loan_multiplier_high": 987.65,
"mocare_percent": 987.65,
"duration_months": 987,
"duration_months_high": 123,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": false,
"version": 987,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
}
}
createProduct
Response
Returns a ProductObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateProductInput!
|
Example
Query
mutation createProduct($input: CreateProductInput!) {
createProduct(input: $input) {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Variables
{"input": CreateProductInput}
Response
{
"data": {
"createProduct": {
"product_id": "4",
"name": "xyz789",
"slug": "xyz789",
"brand": "abc123",
"model": "abc123",
"category_id": "abc123",
"category": CategoryObjectType,
"description": "xyz789",
"long_description": "abc123",
"base_specifications": {},
"primary_image_url": "xyz789",
"images": ["xyz789"],
"video_url": "xyz789",
"meta_title": "abc123",
"meta_description": "xyz789",
"keywords": ["xyz789"],
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
createProductOffer
Response
Returns a ProductOfferObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateProductOfferInput!
|
Example
Query
mutation createProductOffer($input: CreateProductOfferInput!) {
createProductOffer(input: $input) {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
}
Variables
{"input": CreateProductOfferInput}
Response
{
"data": {
"createProductOffer": {
"product_offer_id": 4,
"sku_id": 4,
"description": "xyz789",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 987.65,
"minimum_purchase_amount": 987.65,
"maximum_discount_amount": 123.45,
"usage_limit": 987,
"usage_count": 987,
"usage_limit_per_customer": 987,
"promo_code": "abc123",
"category_filters": ["xyz789"],
"brand_filters": ["abc123"],
"applicable_channels": ["abc123"],
"active": true,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
createRefund
Description
Create a new refund record
Response
Returns a RefundGraphQL!
Arguments
| Name | Description |
|---|---|
input - CreateRefundInput!
|
Example
Query
mutation createRefund($input: CreateRefundInput!) {
createRefund(input: $input) {
refund_id
customer_id
sale_id
returns_request_id
order_id
loan_contract_id
source_payment_id
adjustment_id
refund_workflow_type
refund_amount
status
refund_method
transaction_reference
submitted_by
submitted_by_name
actor_id
approved_by
approved_by_name
customer_name
customer_phone
customer_official_id
approved_at
processed_at
completed_at
notes
rejection_reason
returns_request_type
created_at
updated_at
}
}
Variables
{"input": CreateRefundInput}
Response
{
"data": {
"createRefund": {
"refund_id": "4",
"customer_id": "abc123",
"sale_id": "abc123",
"returns_request_id": "abc123",
"order_id": "abc123",
"loan_contract_id": "xyz789",
"source_payment_id": "xyz789",
"adjustment_id": "abc123",
"refund_workflow_type": "RETURN",
"refund_amount": 123.45,
"status": "PENDING",
"refund_method": "MPESA",
"transaction_reference": "xyz789",
"submitted_by": "abc123",
"submitted_by_name": "abc123",
"actor_id": "xyz789",
"approved_by": "xyz789",
"approved_by_name": "xyz789",
"customer_name": "xyz789",
"customer_phone": "xyz789",
"customer_official_id": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"processed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"notes": "xyz789",
"rejection_reason": "abc123",
"returns_request_type": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
createRepair
Response
Returns a RepairObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateRepairInput!
|
Example
Query
mutation createRepair($input: CreateRepairInput!) {
createRepair(input: $input) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{"input": CreateRepairInput}
Response
{
"data": {
"createRepair": {
"repair_id": 4,
"repair_display_id": "xyz789",
"requires_technician": true,
"inventory_id": "xyz789",
"customer_id": "xyz789",
"original_sale_id": "xyz789",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 123.45,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
}
}
createRepossessionRequest
Description
Create a new standalone repossession request
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
input - CreateRepossessionRequestInput!
|
Example
Query
mutation createRepossessionRequest($input: CreateRepossessionRequestInput!) {
createRepossessionRequest(input: $input) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{"input": CreateRepossessionRequestInput}
Response
{
"data": {
"createRepossessionRequest": {
"_id": 4,
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "abc123",
"sale_id": "xyz789",
"ticket_id": "abc123",
"current_device_id": "abc123",
"target_device_model": "abc123",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "xyz789",
"cxc_notes": "abc123",
"submitted_by": "xyz789",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 123.45,
"amount_paid_to_date": 987.65,
"current_device_deposit": 987.65,
"new_device_deposit": 987.65,
"new_device_price": 987.65,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": true,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "abc123",
"lane_owner": "xyz789",
"superseded_by_request_id": "abc123",
"supersedes_request_id": "xyz789",
"workflow_switch_reason": "abc123",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": true,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "abc123",
"fulfillment_mode": "abc123",
"mpesa_reference": "abc123",
"upgrade_policy_mode": "abc123",
"customer_age_weeks_at_decision": 987,
"new_credit_sale_id": "4",
"new_credit_sale_activated_at": "abc123",
"topup_confirmed_at": "abc123",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": false,
"pending_detach_inventory_id": "4",
"manual_detach_detached_at": "xyz789",
"manual_detach_inventory_id": "4",
"linked_application_id": "4"
}
}
}
createReturnRequest
Description
Create a new return request
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
input - CreateReturnRequestInput!
|
Example
Query
mutation createReturnRequest($input: CreateReturnRequestInput!) {
createReturnRequest(input: $input) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{"input": CreateReturnRequestInput}
Response
{
"data": {
"createReturnRequest": {
"_id": "4",
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "abc123",
"sale_id": "abc123",
"ticket_id": "xyz789",
"current_device_id": "xyz789",
"target_device_model": "abc123",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "xyz789",
"cxc_notes": "abc123",
"submitted_by": "abc123",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 987.65,
"amount_paid_to_date": 123.45,
"current_device_deposit": 123.45,
"new_device_deposit": 987.65,
"new_device_price": 123.45,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": false,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "xyz789",
"lane_owner": "xyz789",
"superseded_by_request_id": "xyz789",
"supersedes_request_id": "xyz789",
"workflow_switch_reason": "abc123",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": true,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "xyz789",
"fulfillment_mode": "xyz789",
"mpesa_reference": "xyz789",
"upgrade_policy_mode": "xyz789",
"customer_age_weeks_at_decision": 987,
"new_credit_sale_id": "4",
"new_credit_sale_activated_at": "abc123",
"topup_confirmed_at": "abc123",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": false,
"pending_detach_inventory_id": 4,
"manual_detach_detached_at": "xyz789",
"manual_detach_inventory_id": 4,
"linked_application_id": "4"
}
}
}
createRole
Response
Returns a RoleObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateRoleInput!
|
Example
Query
mutation createRole($input: CreateRoleInput!) {
createRole(input: $input) {
_id
id
name
level
permissions
description
canManage
realm
}
}
Variables
{"input": CreateRoleInput}
Response
{
"data": {
"createRole": {
"_id": "xyz789",
"id": "xyz789",
"name": "abc123",
"level": 987,
"permissions": ["abc123"],
"description": "abc123",
"canManage": ["abc123"],
"realm": "abc123"
}
}
}
createSale
Response
Returns a SalesObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateSalesInput!
|
Example
Query
mutation createSale($input: CreateSalesInput!) {
createSale(input: $input) {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
inventory_id
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
loan_contract {
contract_id
loan_id
sale_id
customer_id
customer {
...RawCustomersDtoFragment
}
opening_date
duration
upfront_payment
deposit
repayment_type
gross_loan_amount
net_loan_amount
interest_rate
repayment_rate
interest_calculation_method
payment_allocation_method
disbursement_date
maturity_date
first_payment_due_date
grace_period_days
penalty_rate_per_day
is_restructured
original_contract_id
loan_product_code
loan_status_override
early_payoff_discounts {
...LoanEarlyPayoffDiscountTypeFragment
}
metadata
created_at
updated_at
installments {
...LoanInstallmentDtoFragment
}
overdueInstallments {
...LoanInstallmentDtoFragment
}
nextDueInstallment {
...LoanInstallmentDtoFragment
}
ledgerEntries {
...LoanLedgerDtoFragment
}
delinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
paymentAllocations {
...PaymentAllocationDtoFragment
}
latest_ledger_id
grace_period_status
grace_period_category
grace_period_credit_expiry
grace_period_last_trigger_source
returned_date
is_lost
latest_ledger {
...LoanLedgerDtoFragment
}
contract {
...LoanContractDtoFragment
}
}
commission {
product_commission
loan_commission
cash_commission
channel_type
commission_type
commission_rule_id
commission_override_id
is_override
}
cash_price
reporting {
loan_id
business_model
is_3p_sale
partner_name
credit_check_done
cash_price
loan_price
loan_period
}
}
}
Variables
{"input": CreateSalesInput}
Response
{
"data": {
"createSale": {
"sale_id": "4",
"sale_date": "2007-12-03T10:15:30Z",
"order_id": "4",
"customer_id": 4,
"sale_agent_id": 4,
"submitting_agent_id": "4",
"sfm_id": "4",
"price_plan_id": "4",
"pricePlan": PricePlanObjectType,
"inventory_id": "4",
"inventory": InventoryObjectType,
"payment_type": "REPAIR",
"payment_status": "UNPAID",
"normal_high_deposit": "NORMAL",
"final_sale_price": 987.65,
"upfront_payment": 123.45,
"gross_loan_amount": 123.45,
"marketplace_fee": 987.65,
"seller_payout": 123.45,
"invoice_number": "xyz789",
"status": "ACTIVE",
"return_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"order": OrderObjectType,
"loan_contract": LoanContractDto,
"commission": CommissionSnapshotType,
"cash_price": 987.65,
"reporting": SaleReportingType
}
}
}
createSaleFromOrder
Response
Returns a SalesObjectType!
Example
Query
mutation createSaleFromOrder(
$orderId: ID!,
$pricePlanId: ID,
$productCashPrice: Float,
$saleDate: DateTime
) {
createSaleFromOrder(
orderId: $orderId,
pricePlanId: $pricePlanId,
productCashPrice: $productCashPrice,
saleDate: $saleDate
) {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
inventory_id
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
loan_contract {
contract_id
loan_id
sale_id
customer_id
customer {
...RawCustomersDtoFragment
}
opening_date
duration
upfront_payment
deposit
repayment_type
gross_loan_amount
net_loan_amount
interest_rate
repayment_rate
interest_calculation_method
payment_allocation_method
disbursement_date
maturity_date
first_payment_due_date
grace_period_days
penalty_rate_per_day
is_restructured
original_contract_id
loan_product_code
loan_status_override
early_payoff_discounts {
...LoanEarlyPayoffDiscountTypeFragment
}
metadata
created_at
updated_at
installments {
...LoanInstallmentDtoFragment
}
overdueInstallments {
...LoanInstallmentDtoFragment
}
nextDueInstallment {
...LoanInstallmentDtoFragment
}
ledgerEntries {
...LoanLedgerDtoFragment
}
delinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
paymentAllocations {
...PaymentAllocationDtoFragment
}
latest_ledger_id
grace_period_status
grace_period_category
grace_period_credit_expiry
grace_period_last_trigger_source
returned_date
is_lost
latest_ledger {
...LoanLedgerDtoFragment
}
contract {
...LoanContractDtoFragment
}
}
commission {
product_commission
loan_commission
cash_commission
channel_type
commission_type
commission_rule_id
commission_override_id
is_override
}
cash_price
reporting {
loan_id
business_model
is_3p_sale
partner_name
credit_check_done
cash_price
loan_price
loan_period
}
}
}
Variables
{
"orderId": "4",
"pricePlanId": 4,
"productCashPrice": 123.45,
"saleDate": "2007-12-03T10:15:30Z"
}
Response
{
"data": {
"createSaleFromOrder": {
"sale_id": 4,
"sale_date": "2007-12-03T10:15:30Z",
"order_id": 4,
"customer_id": 4,
"sale_agent_id": 4,
"submitting_agent_id": "4",
"sfm_id": 4,
"price_plan_id": "4",
"pricePlan": PricePlanObjectType,
"inventory_id": 4,
"inventory": InventoryObjectType,
"payment_type": "REPAIR",
"payment_status": "UNPAID",
"normal_high_deposit": "NORMAL",
"final_sale_price": 987.65,
"upfront_payment": 123.45,
"gross_loan_amount": 987.65,
"marketplace_fee": 987.65,
"seller_payout": 987.65,
"invoice_number": "abc123",
"status": "ACTIVE",
"return_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"order": OrderObjectType,
"loan_contract": LoanContractDto,
"commission": CommissionSnapshotType,
"cash_price": 123.45,
"reporting": SaleReportingType
}
}
}
createSeller
Response
Returns a SellerObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateSellerInput!
|
Example
Query
mutation createSeller($input: CreateSellerInput!) {
createSeller(input: $input) {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
_id
id
channel_type
channel_category
partner_track
entity_type
is_owner
platform_owner
is_active
is_deleted
owner_user_id
staff_user_ids {
...UserObjectTypeFragment
}
reports_to_id {
...PartnerProfileObjectTypeFragment
}
hierarchy_depth
hierarchy_path
downline_partner_ids
whatsapp_number
secondary_number
location_details {
...LocationDetailsObjectTypeFragment
}
partner_status
assignment_status
training_status
current_cohort_id {
...CohortObjectTypeFragment
}
assigned_trainer_id
assigned_sfm_id
assigned_sfm {
...InternalStaffProfileObjectTypeFragment
}
assigned_promoter_id
assigned_promoter {
...InternalStaffProfileObjectTypeFragment
}
graduation_date
cohort_history {
...CohortEnrollmentObjectTypeFragment
}
assigned_shop_id
shop_based
outlets {
...RetailerOutletObjectTypeFragment
}
shop_metadata {
...StaticShopMetadataObjectTypeFragment
}
kyc_metadata {
...KYCMetadataObjectTypeFragment
}
activation_date
reactivation_date
deactivation_date
created_by {
...UserObjectTypeFragment
}
agent_profile_id {
...AgentProfileObjectTypeFragment
}
shop_manager_id {
...InternalStaffProfileObjectTypeFragment
}
seller_id {
...SellerObjectTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{"input": CreateSellerInput}
Response
{
"data": {
"createSeller": {
"seller_id": 4,
"commission_type_id": "xyz789",
"tier_id": "abc123",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 123.45,
"total_reviews": 123,
"total_sales": 987,
"total_orders_365_days": 123,
"badges": ["abc123"],
"suspension_reason": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "xyz789",
"platform_owner": true,
"partner_profile": PartnerProfileObjectType
}
}
}
createSellerCatalog
Response
Returns a SellerCatalogObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateSellerCatalogInput!
|
Example
Query
mutation createSellerCatalog($input: CreateSellerCatalogInput!) {
createSellerCatalog(input: $input) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"input": CreateSellerCatalogInput}
Response
{
"data": {
"createSellerCatalog": {
"seller_catalog_id": "4",
"seller_id": "abc123",
"sku_id": "xyz789",
"cost_price": 123.45,
"retail_price": 123.45,
"currency": "xyz789",
"stock_on_hand": 987,
"reserved_stock": 123,
"is_active": false,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 987,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
}
}
createSellerTier
Response
Returns a SellerTierObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateSellerTierInput!
|
Example
Query
mutation createSellerTier($input: CreateSellerTierInput!) {
createSellerTier(input: $input) {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"input": CreateSellerTierInput}
Response
{
"data": {
"createSellerTier": {
"id": 4,
"name": "xyz789",
"description": "xyz789",
"priority": 123,
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"price_plans": [PricePlanObjectType]
}
}
}
createSingleDelivery
Response
Returns a DeliveryObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateDeliveryInput!
|
Example
Query
mutation createSingleDelivery($input: CreateDeliveryInput!) {
createSingleDelivery(input: $input) {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
street
city
state
postal_code
country
geo {
...GeoLocationFragment
}
}
tracking_number
provider_info {
provider_name
external_id
tracking_url
}
proof_of_delivery {
images
signature
otp
submitted_otp
otp_expiry_time
match
payment_reference
failed_delivery_reason
}
delivery_notes
destination_location {
lat
lng
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
calls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
latestAnsweredCall {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
created_at
updated_at
deliveryItems {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
}
}
Variables
{"input": CreateDeliveryInput}
Response
{
"data": {
"createSingleDelivery": {
"delivery_id": "4",
"order_id": "4",
"seller_id": 4,
"assigned_rider_id": "4",
"delivery_status": "PENDING",
"delivery_address": DeliveryAddress,
"tracking_number": "xyz789",
"provider_info": ProviderInfo,
"proof_of_delivery": ProofOfDelivery,
"delivery_notes": "xyz789",
"destination_location": GeoLocation,
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"metadata": {},
"assigned_rider": UserObjectType,
"seller": SellerObjectType,
"order": OrderObjectType,
"items": [DeliveryItemObjectType],
"calls": [DeliveryCallObjectType],
"latestAnsweredCall": DeliveryCallObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"deliveryItems": [DeliveryItemObjectType]
}
}
}
createSku
Response
Returns a SkuObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateSkuInput!
|
Example
Query
mutation createSku($input: CreateSkuInput!) {
createSku(input: $input) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{"input": CreateSkuInput}
Response
{
"data": {
"createSku": {
"sku_id": 4,
"product_id": "abc123",
"condition_id": "abc123",
"parent_sku_id": "xyz789",
"level": 123,
"level_attribute_key": "abc123",
"level_attribute_value": "xyz789",
"sku_code": "abc123",
"name": "abc123",
"attributes": {},
"variant_specifications": {},
"msrp_price": 123.45,
"min_seller_price": 123.45,
"max_seller_price": 123.45,
"suggested_retail_price": 987.65,
"effective_price": 123.45,
"images": ["xyz789"],
"weight_grams": 123,
"dimensions_mm": "xyz789",
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
}
}
createSkuChild
Response
Returns a SkuObjectType!
Arguments
| Name | Description |
|---|---|
parentId - ID!
|
|
input - CreateSkuChildInput!
|
Example
Query
mutation createSkuChild(
$parentId: ID!,
$input: CreateSkuChildInput!
) {
createSkuChild(
parentId: $parentId,
input: $input
) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{
"parentId": "4",
"input": CreateSkuChildInput
}
Response
{
"data": {
"createSkuChild": {
"sku_id": "4",
"product_id": "abc123",
"condition_id": "abc123",
"parent_sku_id": "xyz789",
"level": 987,
"level_attribute_key": "xyz789",
"level_attribute_value": "xyz789",
"sku_code": "abc123",
"name": "abc123",
"attributes": {},
"variant_specifications": {},
"msrp_price": 123.45,
"min_seller_price": 987.65,
"max_seller_price": 123.45,
"suggested_retail_price": 123.45,
"effective_price": 987.65,
"images": ["abc123"],
"weight_grams": 123,
"dimensions_mm": "abc123",
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
}
}
createSwapRequest
Description
Create a new swap request
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
input - CreateSwapRequestInput!
|
Example
Query
mutation createSwapRequest($input: CreateSwapRequestInput!) {
createSwapRequest(input: $input) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{"input": CreateSwapRequestInput}
Response
{
"data": {
"createSwapRequest": {
"_id": "4",
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "abc123",
"sale_id": "xyz789",
"ticket_id": "abc123",
"current_device_id": "xyz789",
"target_device_model": "xyz789",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "abc123",
"cxc_notes": "abc123",
"submitted_by": "abc123",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 123.45,
"amount_paid_to_date": 987.65,
"current_device_deposit": 987.65,
"new_device_deposit": 123.45,
"new_device_price": 987.65,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": true,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "xyz789",
"lane_owner": "abc123",
"superseded_by_request_id": "xyz789",
"supersedes_request_id": "abc123",
"workflow_switch_reason": "abc123",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": false,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "abc123",
"fulfillment_mode": "abc123",
"mpesa_reference": "abc123",
"upgrade_policy_mode": "abc123",
"customer_age_weeks_at_decision": 123,
"new_credit_sale_id": 4,
"new_credit_sale_activated_at": "abc123",
"topup_confirmed_at": "abc123",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": true,
"pending_detach_inventory_id": 4,
"manual_detach_detached_at": "xyz789",
"manual_detach_inventory_id": "4",
"linked_application_id": "4"
}
}
}
createUpgradeRequest
Description
Create a new upgrade request
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
input - CreateUpgradeRequestInput!
|
Example
Query
mutation createUpgradeRequest($input: CreateUpgradeRequestInput!) {
createUpgradeRequest(input: $input) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{"input": CreateUpgradeRequestInput}
Response
{
"data": {
"createUpgradeRequest": {
"_id": "4",
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "abc123",
"sale_id": "abc123",
"ticket_id": "xyz789",
"current_device_id": "abc123",
"target_device_model": "abc123",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "xyz789",
"cxc_notes": "xyz789",
"submitted_by": "abc123",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 123.45,
"amount_paid_to_date": 987.65,
"current_device_deposit": 123.45,
"new_device_deposit": 987.65,
"new_device_price": 123.45,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": false,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "xyz789",
"lane_owner": "xyz789",
"superseded_by_request_id": "xyz789",
"supersedes_request_id": "abc123",
"workflow_switch_reason": "xyz789",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": true,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "xyz789",
"fulfillment_mode": "xyz789",
"mpesa_reference": "xyz789",
"upgrade_policy_mode": "xyz789",
"customer_age_weeks_at_decision": 123,
"new_credit_sale_id": 4,
"new_credit_sale_activated_at": "xyz789",
"topup_confirmed_at": "abc123",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": true,
"pending_detach_inventory_id": "4",
"manual_detach_detached_at": "abc123",
"manual_detach_inventory_id": "4",
"linked_application_id": 4
}
}
}
createUser
Response
Returns a UserObjectType!
Arguments
| Name | Description |
|---|---|
input - CreateUserInput!
|
Example
Query
mutation createUser($input: CreateUserInput!) {
createUser(input: $input) {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
}
Variables
{"input": CreateUserInput}
Response
{
"data": {
"createUser": {
"_id": 4,
"id": "xyz789",
"keycloak_id": "abc123",
"username": "xyz789",
"email": "abc123",
"first_name": "xyz789",
"surname": "xyz789",
"last_name": "xyz789",
"phone_number": "xyz789",
"role": "xyz789",
"enabled": false,
"user_type": "SYSTEM_ADMIN",
"is_internal": false,
"first_login": "2007-12-03T10:15:30Z",
"last_login": "2007-12-03T10:15:30Z",
"availability_status": "AVAILABLE",
"synced_at": "2007-12-03T10:15:30Z",
"group_memberships": ["abc123"],
"permissions": ["xyz789"],
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
createWalletTransaction
Response
Returns a RawWalletTransactionsDto!
Arguments
| Name | Description |
|---|---|
input - CreateRawWalletTransactionsInput!
|
Example
Query
mutation createWalletTransaction($input: CreateRawWalletTransactionsInput!) {
createWalletTransaction(input: $input) {
wallet_transaction_id
wallet_id
customer_id
sale_id
wallet_transaction_ref_id
wallet_transaction_type
wallet_transaction_sub_type
wallet_transaction_amount
wallet_transaction_balance_before
wallet_transaction_balance_after
wallet_transaction_days_value
wallet_transaction_points_value
wallet_transaction_status
reference
wallet_transaction_description
wallet_transaction_metadata
wallet_transaction_created_at
wallet_transaction_updated_at
wallet_transaction_completed_at
}
}
Variables
{"input": CreateRawWalletTransactionsInput}
Response
{
"data": {
"createWalletTransaction": {
"wallet_transaction_id": 4,
"wallet_id": "4",
"customer_id": "4",
"sale_id": "4",
"wallet_transaction_ref_id": 4,
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 123.45,
"wallet_transaction_balance_before": 123.45,
"wallet_transaction_balance_after": 123.45,
"wallet_transaction_days_value": 123.45,
"wallet_transaction_points_value": 123.45,
"wallet_transaction_status": "PENDING",
"reference": "xyz789",
"wallet_transaction_description": "xyz789",
"wallet_transaction_metadata": {},
"wallet_transaction_created_at": "2007-12-03T10:15:30Z",
"wallet_transaction_updated_at": "2007-12-03T10:15:30Z",
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
}
}
customer_module_mutations
Description
Access customer module operations
Response
Returns a CustomerModuleNamespace!
Example
Query
mutation customer_module_mutations {
customer_module_mutations {
credit {
queueAnalytics {
...QueueAnalyticsTypeFragment
}
queueWorkload {
...QueueWorkloadResponseTypeFragment
}
queueApplicationsOffset {
...OffsetPaginatedApplicationsFragment
}
queueApplicationsCursor {
...CursorPaginatedApplicationsFragment
}
updateCreditProspectStage {
...ApplicationEntityGraphQLFragment
}
assignCreditAgent {
...ApplicationEntityGraphQLFragment
}
updateCreditApplication {
...ApplicationEntityGraphQLFragment
}
retryOrderCreation {
...ApplicationEntityGraphQLFragment
}
}
subsequentLoan {
createSubsequentLoanApplication {
...ApplicationEntityGraphQLFragment
}
verifySubsequentLoanOtp {
...ApplicationEntityGraphQLFragment
}
checkSubsequentLoanEligibility
}
risk {
riskRecord {
...RawRiskDtoFragment
}
riskRecordByFilters {
...RawRiskDtoFragment
}
riskRecordsCount
riskRecordsCursor {
...CursorPaginatedRawRiskFragment
}
riskRecordsOffset {
...OffsetPaginatedRawRiskFragment
}
riskRecordsByCustomer {
...RawRiskDtoFragment
}
isBlocked {
...RawRiskDtoFragment
}
createRiskRecord {
...RawRiskDtoFragment
}
updateRiskRecord {
...RawRiskDtoFragment
}
updateManyRiskRecords
deleteRiskRecord
deleteManyRiskRecords
deactivateRiskRecord {
...RawRiskDtoFragment
}
combinedRiskFlagForCustomer {
...CombinedRiskFlagResultTypeFragment
}
combinedRiskFlagForApplication {
...CombinedRiskFlagResultTypeFragment
}
exemptionEligibility {
...ExemptionEligibilityTypeFragment
}
processExemption {
...ApplicationEntityGraphQLFragment
}
calculateCustomerRisk
calculateApplicationRisk
}
applications {
resubmissionEligibility {
...ResubmissionJourneyGraphQLFragment
}
resubmissionForm {
...ResubmissionFormSchemaGraphQLFragment
}
resubmissionOverview {
...ResubmissionOverviewTypeFragment
}
resubmission {
...ApplicationResubmissionGraphQLFragment
}
submitResubmission {
...ApplicationResubmissionGraphQLFragment
}
updateResubmission {
...ApplicationResubmissionGraphQLFragment
}
commitResubmission {
...ApplicationResubmissionGraphQLFragment
}
transferProspectForResubmission
}
onboardingChecks {
runFullValidationCheck {
...OnboardingCheckResponseFragment
}
runIprsCheck {
...OnboardingCheckResponseFragment
}
runMpesaCheck {
...OnboardingCheckResponseFragment
}
runDuplicateCheck {
...OnboardingCheckResponseFragment
}
runCrbCheck {
...OnboardingCheckResponseFragment
}
runKraCheck {
...OnboardingCheckResponseFragment
}
runFateGuideCheck {
...OnboardingCheckResponseFragment
}
runRiskCheck {
...OnboardingCheckResponseFragment
}
runPrescreeningCheck {
...OnboardingCheckResponseFragment
}
runPrescreenFlow {
...OnboardingCheckResponseFragment
}
runNokCheckFlow {
...OnboardingCheckResponseFragment
}
runResubmissionIprsCheck {
...OnboardingCheckResponseFragment
}
runResubmissionMpesaCheck {
...OnboardingCheckResponseFragment
}
runResubmissionNokMpesaCheck {
...OnboardingCheckResponseFragment
}
runResubmissionKraCheck {
...OnboardingCheckResponseFragment
}
runResubmissionRiskCheck {
...OnboardingCheckResponseFragment
}
resendDuplicateOtp {
...ApplicationEntityGraphQLFragment
}
verifyDuplicateOtp {
...ApplicationEntityGraphQLFragment
}
previewDuplicateCheck {
...DuplicatePreviewCheckResultFragment
}
}
onboardingSupport {
rerunRoundRobin {
...RoundRobinRerunResultTypeFragment
}
}
selfUnlockDevice {
success
customer_id
total_contracts
eligible_contracts
queued_unlocks
skipped_contracts
results {
...CustomerSelfUnlockContractResultTypeFragment
}
}
gracePeriodEligibility {
eligible
reason
contractId
loanId
category
maxAvailableDays
selectableOptions
currentGracePeriodExpiry
isActiveGracePeriod
}
requestGracePeriod {
success
contractId
loanId
category
graceDays
gracePeriodCreditExpiry
wasExtended
}
grantGracePeriodOverride {
success
contractId
loanId
category
graceDays
gracePeriodCreditExpiry
wasExtended
}
revokeGracePeriod {
success
contractId
loanId
revoked
deviceAction
}
}
}
Response
{
"data": {
"customer_module_mutations": {
"credit": CreditNamespace,
"subsequentLoan": SubsequentLoanNamespace,
"risk": RiskNamespace,
"applications": ApplicationsNamespace,
"onboardingChecks": OnboardingChecksNamespace,
"onboardingSupport": OnboardingSupportNamespace,
"selfUnlockDevice": CustomerSelfUnlockResultType,
"gracePeriodEligibility": GracePeriodEligibilityResultType,
"requestGracePeriod": GracePeriodAwardResultType,
"grantGracePeriodOverride": GracePeriodAwardResultType,
"revokeGracePeriod": GracePeriodRevocationResultType
}
}
}
deactivateCommission
Response
Returns a CommissionObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
Example
Query
mutation deactivateCommission($id: String!) {
deactivateCommission(id: $id) {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
overrides {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
...AgentProfileObjectTypeFragment
}
commission_rule {
...CommissionObjectTypeFragment
}
}
}
}
Variables
{"id": "abc123"}
Response
{
"data": {
"deactivateCommission": {
"id": 4,
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"attribute_type": "ALL",
"commission_value_type": "FLAT",
"sku_id": "abc123",
"min_price": 987.65,
"max_price": 987.65,
"product_commission": 123.45,
"loan_commission": 987.65,
"cash_commission": 987.65,
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sku": SkuObjectType,
"overrides": [CommissionOverrideObjectType]
}
}
}
deactivateCommissionOverride
Response
Returns a CommissionOverrideObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
Example
Query
mutation deactivateCommissionOverride($id: String!) {
deactivateCommissionOverride(id: $id) {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
commission_rule {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
...SkuObjectTypeFragment
}
overrides {
...CommissionOverrideObjectTypeFragment
}
}
}
}
Variables
{"id": "abc123"}
Response
{
"data": {
"deactivateCommissionOverride": {
"id": "4",
"agent_profile_id": "abc123",
"commission_rule_id": "abc123",
"product_commission": 123.45,
"loan_commission": 123.45,
"cash_commission": 987.65,
"commission_value_type": "FLAT",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"agent_profile": AgentProfileObjectType,
"commission_rule": CommissionObjectType
}
}
}
deactivateListing
Response
Returns a SellerCatalogObjectType!
Arguments
| Name | Description |
|---|---|
catalogId - ID!
|
Example
Query
mutation deactivateListing($catalogId: ID!) {
deactivateListing(catalogId: $catalogId) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"catalogId": 4}
Response
{
"data": {
"deactivateListing": {
"seller_catalog_id": "4",
"seller_id": "xyz789",
"sku_id": "xyz789",
"cost_price": 123.45,
"retail_price": 123.45,
"currency": "xyz789",
"stock_on_hand": 987,
"reserved_stock": 987,
"is_active": false,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 987,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
}
}
deactivateUser
deductBalanceFromWallet
Response
Returns a RawCustomerWalletsDto!
Example
Query
mutation deductBalanceFromWallet(
$walletId: ID!,
$amount: Float!
) {
deductBalanceFromWallet(
walletId: $walletId,
amount: $amount
) {
customer_wallet_id
customer_id
customer_wallet_available_balance
customer_wallet_total_payments
customer_wallet_total_adjustments
customer_wallet_total_days_given
customer_wallet_total_points
customer_wallet_total_allocated
customer_wallet_lifetime_credits
customer_wallet_lifetime_debits
customer_wallet_currency
customer_wallet_created_at
customer_wallet_updated_at
}
}
Variables
{"walletId": "4", "amount": 123.45}
Response
{
"data": {
"deductBalanceFromWallet": {
"customer_wallet_id": "4",
"customer_id": 4,
"customer_wallet_available_balance": 987.65,
"customer_wallet_total_payments": 123.45,
"customer_wallet_total_adjustments": 987.65,
"customer_wallet_total_days_given": 987.65,
"customer_wallet_total_points": 987.65,
"customer_wallet_total_allocated": 987.65,
"customer_wallet_lifetime_credits": 987.65,
"customer_wallet_lifetime_debits": 123.45,
"customer_wallet_currency": "KES",
"customer_wallet_created_at": "2007-12-03T10:15:30Z",
"customer_wallet_updated_at": "2007-12-03T10:15:30Z"
}
}
}
deleteApplication
Description
Delete an application by ID
deleteApplicationCallDetail
Description
Delete an application call detail record by ID
deleteCallDisposition
Description
Delete a call disposition by ID
deleteCategory
deleteCommission
deleteCommissionOverride
deleteCondition
deleteCustomer
deleteCustomerWallet
deleteDelivery
deleteDeliveryCall
deleteDeliveryItem
deleteFlashSale
deleteFlashSaleItem
deleteGroup
deleteInventory
deleteInventoryAllocation
deleteInventoryLocation
deleteManyUsers
Response
Returns an Int!
Arguments
| Name | Description |
|---|---|
filters - UserFilterInput!
|
Example
Query
mutation deleteManyUsers($filters: UserFilterInput!) {
deleteManyUsers(filters: $filters)
}
Variables
{"filters": UserFilterInput}
Response
{"data": {"deleteManyUsers": 987}}
deleteOrder
deleteOrderItem
deletePricePlan
deleteProduct
deleteProductOffer
deleteRepair
deleteReturnsRequest
Description
Delete a returns request by ID
deleteRole
deleteSale
deleteSeller
deleteSellerCatalog
deleteSellerTier
deleteSku
deleteUser
deleteWalletTransaction
devices
Response
Returns a MdmNamespace!
Example
Query
mutation devices {
devices {
_description
lockDevice {
success
message
command {
...DeviceLockCommandTypeFragment
}
}
unlockDevice {
success
message
command {
...DeviceLockCommandTypeFragment
}
}
bulkUnlockDevices {
totalRequested
totalResolved
totalSucceeded
totalFailed
results {
...BulkUnlockDeviceResultTypeFragment
}
platformSummaries {
...PlatformUnlockSummaryTypeFragment
}
}
bulkLockDevices {
totalRequested
totalResolved
totalSucceeded
totalFailed
results {
...BulkUnlockDeviceResultTypeFragment
}
platformSummaries {
...PlatformUnlockSummaryTypeFragment
}
}
deviceStatus {
success
id
mdmProvider
isLocked
isEnrolled
isOnline
isScreenLocked
isCharging
isLost
imei
imei2
serialNumber
model
manufacturer
osVersion
phoneNumber
phoneNumber2
networkOperator
networkOperator2
batteryLevel
lastSeenAt
enrollmentDate
enrollmentStatus
nextLockDate
unlockCode
deviceGroupId
deviceGroupName
storageTotal
storageAvailable
location {
...DeviceLocationResultTypeFragment
}
simLockInfo {
...SimLockInfoTypeFragment
}
rawStatus
}
activityLogs {
logs {
...MdmActivityLogEntryTypeFragment
}
total_count
}
}
}
Response
{
"data": {
"devices": {
"_description": "xyz789",
"lockDevice": DeviceCommandResultType,
"unlockDevice": DeviceCommandResultType,
"bulkUnlockDevices": BulkUnlockResultType,
"bulkLockDevices": BulkUnlockResultType,
"deviceStatus": DeviceStatusResultType,
"activityLogs": MdmActivityLogsResultType
}
}
}
endFlashSale
Response
Returns a FlashSaleObjectType!
Example
Query
mutation endFlashSale(
$id: ID!,
$endedBy: ID!
) {
endFlashSale(
id: $id,
endedBy: $endedBy
) {
flash_sale_id
title
slug
description
start_date
end_date
status
max_quantity
sold_quantity
min_discount_percentage
is_featured
banner_image
icon_url
countdown_display
priority
participating_sellers
performance_metrics
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"id": 4, "endedBy": "4"}
Response
{
"data": {
"endFlashSale": {
"flash_sale_id": "4",
"title": "abc123",
"slug": "xyz789",
"description": "xyz789",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 987,
"sold_quantity": 123,
"min_discount_percentage": 987.65,
"is_featured": true,
"banner_image": "abc123",
"icon_url": "xyz789",
"countdown_display": true,
"priority": 123,
"participating_sellers": ["abc123"],
"performance_metrics": {},
"meta_title": "xyz789",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
exampleUploadMediaAsset
Response
Returns a MediaAssetDto!
Arguments
| Name | Description |
|---|---|
input - UploadMediaAssetInput!
|
Example
Query
mutation exampleUploadMediaAsset($input: UploadMediaAssetInput!) {
exampleUploadMediaAsset(input: $input) {
_id
domain
type
target
target_id
password
url
name
content_type
storage_provider
raw
createdAt
updatedAt
}
}
Variables
{"input": UploadMediaAssetInput}
Response
{
"data": {
"exampleUploadMediaAsset": {
"_id": 4,
"domain": "AUDIT",
"type": "SELFIE",
"target": "xyz789",
"target_id": "abc123",
"password": "abc123",
"url": "abc123",
"name": "abc123",
"content_type": "xyz789",
"storage_provider": "S3",
"raw": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
expireProductOffer
Response
Returns a ProductOfferObjectType!
Example
Query
mutation expireProductOffer(
$offerId: ID!,
$expiredBy: ID!
) {
expireProductOffer(
offerId: $offerId,
expiredBy: $expiredBy
) {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
}
Variables
{"offerId": 4, "expiredBy": 4}
Response
{
"data": {
"expireProductOffer": {
"product_offer_id": 4,
"sku_id": 4,
"description": "xyz789",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 987.65,
"minimum_purchase_amount": 123.45,
"maximum_discount_amount": 987.65,
"usage_limit": 123,
"usage_count": 987,
"usage_limit_per_customer": 123,
"promo_code": "abc123",
"category_filters": ["abc123"],
"brand_filters": ["abc123"],
"applicable_channels": ["xyz789"],
"active": false,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
export_module_mutations
Description
Access data export module mutations
Response
Returns an ExportModuleNamespace!
Example
Query
mutation export_module_mutations {
export_module_mutations {
dataExport {
scheduleDataExport {
...DataExportTypeFragment
}
estimateRowCount
exportColumnCatalog {
...ExportDomainColumnCatalogTypeFragment
}
dataExport {
...DataExportTypeFragment
}
dataExports {
...DataExportTypeFragment
}
}
}
}
Response
{
"data": {
"export_module_mutations": {
"dataExport": DataExportNamespace
}
}
}
generateDeliveryOtp
Response
Returns a DeliveryObjectType!
Arguments
| Name | Description |
|---|---|
input - GenerateDeliveryOtpInput!
|
Example
Query
mutation generateDeliveryOtp($input: GenerateDeliveryOtpInput!) {
generateDeliveryOtp(input: $input) {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
street
city
state
postal_code
country
geo {
...GeoLocationFragment
}
}
tracking_number
provider_info {
provider_name
external_id
tracking_url
}
proof_of_delivery {
images
signature
otp
submitted_otp
otp_expiry_time
match
payment_reference
failed_delivery_reason
}
delivery_notes
destination_location {
lat
lng
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
calls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
latestAnsweredCall {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
created_at
updated_at
deliveryItems {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
}
}
Variables
{"input": GenerateDeliveryOtpInput}
Response
{
"data": {
"generateDeliveryOtp": {
"delivery_id": "4",
"order_id": 4,
"seller_id": 4,
"assigned_rider_id": "4",
"delivery_status": "PENDING",
"delivery_address": DeliveryAddress,
"tracking_number": "xyz789",
"provider_info": ProviderInfo,
"proof_of_delivery": ProofOfDelivery,
"delivery_notes": "abc123",
"destination_location": GeoLocation,
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"metadata": {},
"assigned_rider": UserObjectType,
"seller": SellerObjectType,
"order": OrderObjectType,
"items": [DeliveryItemObjectType],
"calls": [DeliveryCallObjectType],
"latestAnsweredCall": DeliveryCallObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"deliveryItems": [DeliveryItemObjectType]
}
}
}
incrementSales
Response
Returns a SellerObjectType!
Arguments
| Name | Description |
|---|---|
sellerId - ID!
|
Example
Query
mutation incrementSales($sellerId: ID!) {
incrementSales(sellerId: $sellerId) {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
_id
id
channel_type
channel_category
partner_track
entity_type
is_owner
platform_owner
is_active
is_deleted
owner_user_id
staff_user_ids {
...UserObjectTypeFragment
}
reports_to_id {
...PartnerProfileObjectTypeFragment
}
hierarchy_depth
hierarchy_path
downline_partner_ids
whatsapp_number
secondary_number
location_details {
...LocationDetailsObjectTypeFragment
}
partner_status
assignment_status
training_status
current_cohort_id {
...CohortObjectTypeFragment
}
assigned_trainer_id
assigned_sfm_id
assigned_sfm {
...InternalStaffProfileObjectTypeFragment
}
assigned_promoter_id
assigned_promoter {
...InternalStaffProfileObjectTypeFragment
}
graduation_date
cohort_history {
...CohortEnrollmentObjectTypeFragment
}
assigned_shop_id
shop_based
outlets {
...RetailerOutletObjectTypeFragment
}
shop_metadata {
...StaticShopMetadataObjectTypeFragment
}
kyc_metadata {
...KYCMetadataObjectTypeFragment
}
activation_date
reactivation_date
deactivation_date
created_by {
...UserObjectTypeFragment
}
agent_profile_id {
...AgentProfileObjectTypeFragment
}
shop_manager_id {
...InternalStaffProfileObjectTypeFragment
}
seller_id {
...SellerObjectTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{"sellerId": 4}
Response
{
"data": {
"incrementSales": {
"seller_id": 4,
"commission_type_id": "abc123",
"tier_id": "xyz789",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 123.45,
"total_reviews": 987,
"total_sales": 123,
"total_orders_365_days": 123,
"badges": ["xyz789"],
"suspension_reason": "abc123",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "abc123",
"platform_owner": true,
"partner_profile": PartnerProfileObjectType
}
}
}
initiateLivenessCheck
Response
Returns an ApplicationEntityGraphQL!
Arguments
| Name | Description |
|---|---|
input - InitiateLivenessCheckInput!
|
Example
Query
mutation initiateLivenessCheck($input: InitiateLivenessCheckInput!) {
initiateLivenessCheck(input: $input) {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
mpesa_statement
bank_statement
back_id
front_id
selfie
}
customer {
personal_info {
...ApplicationPersonalInfoGraphQLFragment
}
identification {
...ApplicationIdentificationGraphQLFragment
}
location {
...ApplicationLocationGraphQLFragment
}
employment {
...ApplicationEmploymentGraphQLFragment
}
credit_history {
...ApplicationCreditHistoryGraphQLFragment
}
product {
...ApplicationProductGraphQLFragment
}
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
previous_next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
credit {
credit
credit_process
pending_kyc_tags
system_crb_score
user_crb_score
final_risk_score
status
prospect_status
resubmission_pending_review
customer_bucket
customer_tag
prospect_model
check_by_risk_model
fate_guide
risk_flag
combined_risk_flag
deposit_requirement
advice_customer
customer_credit_fate_reason
last_modified_credit_status
approved_at
product_id
product_name
product_inventory_id
price_plan_id
price_plan_code
price_plan_name
product_cash_price
resubmission_link
initial_weeks
risk_model
validity {
...ApplicationValidityGraphQLFragment
}
metadata
exemption_record {
...ApplicationExemptionRecordGraphQLFragment
}
}
risk {
risk_flag
previous_loans
high_deposit_overide
}
delivery {
delivery_id
rider_id
mpesa_code
delivery_code
rider_submitted_otp
otp_expiry_time
location {
...ApplicationLocationGraphQLFragment
}
front_id
back_id
delivery_status
notes
order_processing {
...SalesProcessingJobStatusGraphQLFragment
}
sale_creation {
...SalesProcessingJobStatusGraphQLFragment
}
}
legacy_references {
lead_id
prospect_id
application_id
}
metadata
timeline {
lead_created
lead_updated
prospect_created
prospect_updated
customer_created
ready_for_scoring
ready_for_calling
ready_for_decision
called_at
scored_at
decisioned_at
device_needed
liveness_created_date
ready_for_screening
screened_at
paused_financial_statement_at
prospect_submitted_at
resubmission_submitted_at
scoring_started_at
first_scored_at
calling_started_at
first_called_at
decision_started_at
first_decisioned_at
last_modified_credit_status_at
}
references {
lead_id
prospect_id
customer_id
crb_transaction_id
resubmission_id
fate_guide_id
final_fate_guide_id
order_id
}
validation_references {
customer_iprs
customer_kra
customer_mpesa
customer_duplicate
nok_iprs
nok_mpesa
nok_duplicate
risk
mpesa_statement
liveness
pre_screening
}
application_type
normal_high_deposit
activeValidationRecords {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
credit_call {
call_details_id
call_type
credit_call_link
}
call_disposition_id
submission_source
leads_screens {
customer
product
consent
termsAndConditions
kycDocuments
creditQuestions
}
prospects_screens {
liveness
nextOfKin
product
images
}
liveness_check {
method
link
}
consent {
sales_approval
terms_and_conditions
source_of_information
verified
verification_phone
referrer_name
created_at
otp
verified_at
}
staff {
scorer {
...ApplicationStaffMemberGraphQLFragment
}
caller {
...ApplicationStaffMemberGraphQLFragment
}
decisioner {
...ApplicationStaffMemberGraphQLFragment
}
sales_agent {
...ApplicationSalesAgentGraphQLFragment
}
submitting_agent {
...ApplicationSalesAgentGraphQLFragment
}
screener {
...ApplicationSalesAgentGraphQLFragment
}
seller {
...ApplicationSalesAgentGraphQLFragment
}
sfm {
...ApplicationSalesAgentGraphQLFragment
}
}
creditProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
customerProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
salesAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
submittingAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
sfmAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
active_resubmission {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
createdAt
updatedAt
callDisposition {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
validation_records {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
active_validation_records {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
creditCallDetails {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
activeCreditPricePlan {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
}
}
Variables
{"input": InitiateLivenessCheckInput}
Response
{
"data": {
"initiateLivenessCheck": {
"_id": "4",
"customer_id": "xyz789",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["abc123"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "xyz789",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [
ValidationRecordGraphQLEntity
],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
}
}
inventory_module_mutations
Description
Access inventory module operations
Response
Returns an InventoryModuleNamespace!
Example
Query
mutation inventory_module_mutations {
inventory_module_mutations {
categories {
createCategory {
...CategoryObjectTypeFragment
}
category {
...CategoryObjectTypeFragment
}
categories {
...CategoryObjectTypeFragment
}
categoriesWithOffsetPagination {
...OffsetPaginatedCategoriesFragment
}
categoriesWithCursorPagination {
...CursorPaginatedCategoriesFragment
}
updateCategory {
...CategoryObjectTypeFragment
}
deleteCategory
categoriesCount
categoryHierarchy {
...CategoryObjectTypeFragment
}
categoryPath {
...CategoryObjectTypeFragment
}
activeCategories {
...CategoryObjectTypeFragment
}
}
conditions {
createCondition {
...ConditionObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
conditions {
...ConditionObjectTypeFragment
}
conditionsWithOffsetPagination {
...OffsetPaginatedConditionsFragment
}
conditionsWithCursorPagination {
...CursorPaginatedConditionsFragment
}
updateCondition {
...ConditionObjectTypeFragment
}
deleteCondition
conditionsCount
}
flashSales {
createFlashSale {
...FlashSaleObjectTypeFragment
}
flashSale {
...FlashSaleObjectTypeFragment
}
flashSales {
...FlashSaleObjectTypeFragment
}
flashSalesWithOffsetPagination {
...OffsetPaginatedFlashSalesFragment
}
flashSalesWithCursorPagination {
...CursorPaginatedFlashSalesFragment
}
updateFlashSale {
...FlashSaleObjectTypeFragment
}
deleteFlashSale
activeFlashSales {
...FlashSaleObjectTypeFragment
}
upcomingFlashSales {
...FlashSaleObjectTypeFragment
}
activateFlashSale {
...FlashSaleObjectTypeFragment
}
endFlashSale {
...FlashSaleObjectTypeFragment
}
}
flashSaleItems {
createFlashSaleItem {
...FlashSaleItemObjectTypeFragment
}
flashSaleItem {
...FlashSaleItemObjectTypeFragment
}
flashSaleItems {
...FlashSaleItemObjectTypeFragment
}
flashSaleItemsWithOffsetPagination {
...OffsetPaginatedFlashSaleItemsFragment
}
flashSaleItemsWithCursorPagination {
...CursorPaginatedFlashSaleItemsFragment
}
updateFlashSaleItem {
...FlashSaleItemObjectTypeFragment
}
deleteFlashSaleItem
flashSaleItemsByFlashSale {
...FlashSaleItemObjectTypeFragment
}
activeFlashSaleItems {
...FlashSaleItemObjectTypeFragment
}
topDiscountedItems {
...FlashSaleItemObjectTypeFragment
}
updateFlashSaleItemDiscount {
...FlashSaleItemObjectTypeFragment
}
}
inventory {
createInventory {
... on InventoryObjectType {
...InventoryObjectTypeFragment
}
... on BulkInventoryResult {
...BulkInventoryResultFragment
}
}
inventory {
...InventoryObjectTypeFragment
}
inventoryItems {
...InventoryObjectTypeFragment
}
inventoryWithOffsetPagination {
...OffsetPaginatedInventoryFragment
}
inventoryWithCursorPagination {
...CursorPaginatedInventoryFragment
}
updateInventory {
...InventoryObjectTypeFragment
}
deleteInventory
inventoryCount
inventoryBySerialNumber {
...InventoryObjectTypeFragment
}
inventoryBySeller {
...InventoryObjectTypeFragment
}
inventoryByLocation {
...InventoryObjectTypeFragment
}
availableInventory {
...InventoryObjectTypeFragment
}
activeLoanDevices {
...InventoryObjectTypeFragment
}
inventoryStats {
...InventoryStatsFragment
}
updateInventoryPhysicalState {
...InventoryObjectTypeFragment
}
updateInventoryMdmEnrollment {
...InventoryObjectTypeFragment
}
updateInventoryEnrollmentStatus {
...InventoryObjectTypeFragment
}
assignInventoryToContract {
...InventoryObjectTypeFragment
}
moveInventoryToLocation {
...InventoryObjectTypeFragment
}
getConditionFromQCReport {
...QCReportWithConditionFragment
}
updateInventoryWithQCReport {
...InventoryObjectTypeFragment
}
}
inventoryLocations {
createInventoryLocation {
...InventoryLocationObjectTypeFragment
}
inventoryLocation {
...InventoryLocationObjectTypeFragment
}
inventoryLocations {
...InventoryLocationObjectTypeFragment
}
updateInventoryLocation {
...InventoryLocationObjectTypeFragment
}
deleteInventoryLocation
}
productOffers {
createProductOffer {
...ProductOfferObjectTypeFragment
}
productOffers {
...ProductOfferObjectTypeFragment
}
updateProductOffer {
...ProductOfferObjectTypeFragment
}
}
products {
createProduct {
...ProductObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
products {
...ProductObjectTypeFragment
}
productsWithOffsetPagination {
...OffsetPaginatedProductsFragment
}
productsWithCursorPagination {
...CursorPaginatedProductsFragment
}
updateProduct {
...ProductObjectTypeFragment
}
deleteProduct
productsCount
activeProducts {
...ProductObjectTypeFragment
}
productsByBrand {
...ProductObjectTypeFragment
}
productsByCategory {
...ProductObjectTypeFragment
}
pendingApprovalProducts {
...ProductObjectTypeFragment
}
searchProducts {
...ProductObjectTypeFragment
}
checkProductExists
approveProduct {
...ProductObjectTypeFragment
}
rejectProduct {
...ProductObjectTypeFragment
}
}
repair {
createRepair {
...RepairObjectTypeFragment
}
repairs {
...RepairObjectTypeFragment
}
updateRepair {
...RepairObjectTypeFragment
}
}
sellerCatalog {
createSellerCatalog {
...SellerCatalogObjectTypeFragment
}
createPlatformSellerCatalog {
...SellerCatalogObjectTypeFragment
}
sellerCatalogs {
...SellerCatalogObjectTypeFragment
}
updateSellerCatalog {
...SellerCatalogObjectTypeFragment
}
}
sellers {
createSeller {
...SellerObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
sellers {
...SellerObjectTypeFragment
}
updateSeller {
...SellerObjectTypeFragment
}
deleteSeller
}
skus {
createSku {
...SkuObjectTypeFragment
}
createSkuChild {
...SkuObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
skus {
...SkuObjectTypeFragment
}
skuAncestors {
...SkuObjectTypeFragment
}
skuTree {
...SkuObjectTypeFragment
}
skuEffectivePrice
updateSku {
...SkuObjectTypeFragment
}
deleteSku
}
skuAgentWhitelists {
skuAgentWhitelist {
...SkuAgentWhitelistObjectTypeFragment
}
skuAgentWhitelistItems {
...SkuAgentWhitelistObjectTypeFragment
}
createSkuAgentWhitelist {
...SkuAgentWhitelistObjectTypeFragment
}
updateSkuAgentWhitelist {
...SkuAgentWhitelistObjectTypeFragment
}
deleteSkuAgentWhitelist
}
}
}
Response
{
"data": {
"inventory_module_mutations": {
"categories": CategoriesNamespace,
"conditions": ConditionsNamespace,
"flashSales": FlashSalesNamespace,
"flashSaleItems": FlashSaleItemsNamespace,
"inventory": InventoryNamespace,
"inventoryLocations": InventoryLocationsNamespace,
"productOffers": ProductOffersNamespace,
"products": ProductsNamespace,
"repair": RepairNamespace,
"sellerCatalog": SellerCatalogNamespace,
"sellers": SellersNamespace,
"skus": SkusNamespace,
"skuAgentWhitelists": SkuAgentWhitelistsNamespace
}
}
}
loan_module_mutations
Description
Access loan module operations
Response
Returns a LoanModuleNamespace!
Example
Query
mutation loan_module_mutations {
loan_module_mutations {
loanContracts {
loanContract {
...LoanContractDtoFragment
}
loanContractBySaleId {
...LoanContractDtoFragment
}
loanContractsByCustomerId {
...LoanContractDtoFragment
}
loanContractsByStatus {
...LoanContractDtoFragment
}
loanContractsByRepaymentType {
...LoanContractDtoFragment
}
activeLoanContracts {
...LoanContractDtoFragment
}
allLoanContracts {
...LoanContractDtoFragment
}
loanContractsWithOffsetPagination {
...OffsetPaginatedLoanContractsFragment
}
loanContractsCursor {
...CursorPaginatedLoanContractsFragment
}
loanContractsCount
createLoanContract {
...LoanContractDtoFragment
}
updateLoanContract {
...LoanContractDtoFragment
}
deleteLoanContract
deleteManyLoanContracts
markLoanContractAsPaidOff {
...LoanContractDtoFragment
}
markLoanContractAsWriteOff {
...LoanContractDtoFragment
}
disburseLoanContract {
...LoanContractDtoFragment
}
earlySettlementQuote {
...EarlySettlementQuoteTypeFragment
}
applyEarlySettlement {
...ApplyEarlySettlementResultTypeFragment
}
triggerContractAging {
...AgingResultFragment
}
triggerCustomerAging {
...AgingResultFragment
}
}
loanLedger {
loanLedgerEntry {
...LoanLedgerDtoFragment
}
allLoanLedgerEntries {
...LoanLedgerDtoFragment
}
loanLedgerWithOffsetPagination {
...OffsetPaginatedLoanLedgerFragment
}
loanLedgerCursor {
...CursorPaginatedLoanLedgerFragment
}
loanLedgerCount
createLoanLedgerEntry {
...LoanLedgerDtoFragment
}
updateLoanLedgerEntry {
...LoanLedgerDtoFragment
}
deleteLoanLedgerEntry
paymentStatement {
...OffsetPaginatedPaymentStatementFragment
}
}
paymentAllocations {
paymentAllocation {
...PaymentAllocationDtoFragment
}
allPaymentAllocations {
...PaymentAllocationDtoFragment
}
paymentAllocationsWithOffsetPagination {
...OffsetPaginatedPaymentAllocationsFragment
}
paymentAllocationsCount
createPaymentAllocation {
...PaymentAllocationDtoFragment
}
updatePaymentAllocation {
...PaymentAllocationDtoFragment
}
deletePaymentAllocation
moveLoanPayments {
...MoveLoanPaymentsResultTypeFragment
}
}
loanInstallments {
loanInstallment {
...LoanInstallmentDtoFragment
}
allLoanInstallments {
...LoanInstallmentDtoFragment
}
loanInstallmentsWithOffsetPagination {
...OffsetPaginatedLoanInstallmentsFragment
}
loanInstallmentsCursor {
...CursorPaginatedLoanInstallmentsFragment
}
loanInstallmentsCount
createLoanInstallment {
...LoanInstallmentDtoFragment
}
updateLoanInstallment {
...LoanInstallmentDtoFragment
}
deleteLoanInstallment
}
loanDelinquency {
loanDelinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
allLoanDelinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
loanDelinquencyTrackingWithOffsetPagination {
...OffsetPaginatedLoanDelinquencyTrackingFragment
}
loanDelinquencyTrackingCount
createLoanDelinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
updateLoanDelinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
deleteLoanDelinquencyTracking
}
loanOverrides {
loanOverride {
...LoanOverrideDtoFragment
}
allLoanOverrides {
...LoanOverrideDtoFragment
}
loanOverridesWithOffsetPagination {
...OffsetPaginatedLoanOverridesFragment
}
loanOverridesCount
createLoanOverride {
...LoanOverrideDtoFragment
}
updateLoanOverride {
...LoanOverrideDtoFragment
}
deleteLoanOverride
}
accountStatus {
calculateAccountStatus {
...StatusCalculationResultFragment
}
}
loanDashboard {
summary {
...LoanDashboardSummaryFragment
}
}
}
}
Response
{
"data": {
"loan_module_mutations": {
"loanContracts": LoanContractsNamespace,
"loanLedger": LoanLedgerNamespace,
"paymentAllocations": PaymentAllocationsNamespace,
"loanInstallments": LoanInstallmentsNamespace,
"loanDelinquency": LoanDelinquencyNamespace,
"loanOverrides": LoanOverridesNamespace,
"accountStatus": AccountStatusNamespace,
"loanDashboard": LoanDashboardNamespace
}
}
}
markFailedDelivery
Response
Returns a DeliveryObjectType!
Arguments
| Name | Description |
|---|---|
input - MarkFailedDeliveryInput!
|
Example
Query
mutation markFailedDelivery($input: MarkFailedDeliveryInput!) {
markFailedDelivery(input: $input) {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
street
city
state
postal_code
country
geo {
...GeoLocationFragment
}
}
tracking_number
provider_info {
provider_name
external_id
tracking_url
}
proof_of_delivery {
images
signature
otp
submitted_otp
otp_expiry_time
match
payment_reference
failed_delivery_reason
}
delivery_notes
destination_location {
lat
lng
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
calls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
latestAnsweredCall {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
created_at
updated_at
deliveryItems {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
}
}
Variables
{"input": MarkFailedDeliveryInput}
Response
{
"data": {
"markFailedDelivery": {
"delivery_id": "4",
"order_id": 4,
"seller_id": 4,
"assigned_rider_id": "4",
"delivery_status": "PENDING",
"delivery_address": DeliveryAddress,
"tracking_number": "xyz789",
"provider_info": ProviderInfo,
"proof_of_delivery": ProofOfDelivery,
"delivery_notes": "abc123",
"destination_location": GeoLocation,
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"metadata": {},
"assigned_rider": UserObjectType,
"seller": SellerObjectType,
"order": OrderObjectType,
"items": [DeliveryItemObjectType],
"calls": [DeliveryCallObjectType],
"latestAnsweredCall": DeliveryCallObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"deliveryItems": [DeliveryItemObjectType]
}
}
}
markTransactionCompleted
Response
Returns a RawWalletTransactionsDto!
Example
Query
mutation markTransactionCompleted(
$id: ID!,
$completedAt: DateTime
) {
markTransactionCompleted(
id: $id,
completedAt: $completedAt
) {
wallet_transaction_id
wallet_id
customer_id
sale_id
wallet_transaction_ref_id
wallet_transaction_type
wallet_transaction_sub_type
wallet_transaction_amount
wallet_transaction_balance_before
wallet_transaction_balance_after
wallet_transaction_days_value
wallet_transaction_points_value
wallet_transaction_status
reference
wallet_transaction_description
wallet_transaction_metadata
wallet_transaction_created_at
wallet_transaction_updated_at
wallet_transaction_completed_at
}
}
Variables
{
"id": "4",
"completedAt": "2007-12-03T10:15:30Z"
}
Response
{
"data": {
"markTransactionCompleted": {
"wallet_transaction_id": 4,
"wallet_id": "4",
"customer_id": "4",
"sale_id": "4",
"wallet_transaction_ref_id": 4,
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 123.45,
"wallet_transaction_balance_before": 987.65,
"wallet_transaction_balance_after": 987.65,
"wallet_transaction_days_value": 123.45,
"wallet_transaction_points_value": 987.65,
"wallet_transaction_status": "PENDING",
"reference": "xyz789",
"wallet_transaction_description": "abc123",
"wallet_transaction_metadata": {},
"wallet_transaction_created_at": "2007-12-03T10:15:30Z",
"wallet_transaction_updated_at": "2007-12-03T10:15:30Z",
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
}
}
markTransactionFailed
Response
Returns a RawWalletTransactionsDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
mutation markTransactionFailed($id: ID!) {
markTransactionFailed(id: $id) {
wallet_transaction_id
wallet_id
customer_id
sale_id
wallet_transaction_ref_id
wallet_transaction_type
wallet_transaction_sub_type
wallet_transaction_amount
wallet_transaction_balance_before
wallet_transaction_balance_after
wallet_transaction_days_value
wallet_transaction_points_value
wallet_transaction_status
reference
wallet_transaction_description
wallet_transaction_metadata
wallet_transaction_created_at
wallet_transaction_updated_at
wallet_transaction_completed_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"markTransactionFailed": {
"wallet_transaction_id": "4",
"wallet_id": 4,
"customer_id": 4,
"sale_id": 4,
"wallet_transaction_ref_id": "4",
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 123.45,
"wallet_transaction_balance_before": 123.45,
"wallet_transaction_balance_after": 987.65,
"wallet_transaction_days_value": 123.45,
"wallet_transaction_points_value": 123.45,
"wallet_transaction_status": "PENDING",
"reference": "xyz789",
"wallet_transaction_description": "xyz789",
"wallet_transaction_metadata": {},
"wallet_transaction_created_at": "2007-12-03T10:15:30Z",
"wallet_transaction_updated_at": "2007-12-03T10:15:30Z",
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
}
}
moveApplicationToPrescreening
Description
Move an application to the pre-screening stage
Response
Returns an ApplicationEntityGraphQL!
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
mutation moveApplicationToPrescreening($applicationId: ID!) {
moveApplicationToPrescreening(applicationId: $applicationId) {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
mpesa_statement
bank_statement
back_id
front_id
selfie
}
customer {
personal_info {
...ApplicationPersonalInfoGraphQLFragment
}
identification {
...ApplicationIdentificationGraphQLFragment
}
location {
...ApplicationLocationGraphQLFragment
}
employment {
...ApplicationEmploymentGraphQLFragment
}
credit_history {
...ApplicationCreditHistoryGraphQLFragment
}
product {
...ApplicationProductGraphQLFragment
}
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
previous_next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
credit {
credit
credit_process
pending_kyc_tags
system_crb_score
user_crb_score
final_risk_score
status
prospect_status
resubmission_pending_review
customer_bucket
customer_tag
prospect_model
check_by_risk_model
fate_guide
risk_flag
combined_risk_flag
deposit_requirement
advice_customer
customer_credit_fate_reason
last_modified_credit_status
approved_at
product_id
product_name
product_inventory_id
price_plan_id
price_plan_code
price_plan_name
product_cash_price
resubmission_link
initial_weeks
risk_model
validity {
...ApplicationValidityGraphQLFragment
}
metadata
exemption_record {
...ApplicationExemptionRecordGraphQLFragment
}
}
risk {
risk_flag
previous_loans
high_deposit_overide
}
delivery {
delivery_id
rider_id
mpesa_code
delivery_code
rider_submitted_otp
otp_expiry_time
location {
...ApplicationLocationGraphQLFragment
}
front_id
back_id
delivery_status
notes
order_processing {
...SalesProcessingJobStatusGraphQLFragment
}
sale_creation {
...SalesProcessingJobStatusGraphQLFragment
}
}
legacy_references {
lead_id
prospect_id
application_id
}
metadata
timeline {
lead_created
lead_updated
prospect_created
prospect_updated
customer_created
ready_for_scoring
ready_for_calling
ready_for_decision
called_at
scored_at
decisioned_at
device_needed
liveness_created_date
ready_for_screening
screened_at
paused_financial_statement_at
prospect_submitted_at
resubmission_submitted_at
scoring_started_at
first_scored_at
calling_started_at
first_called_at
decision_started_at
first_decisioned_at
last_modified_credit_status_at
}
references {
lead_id
prospect_id
customer_id
crb_transaction_id
resubmission_id
fate_guide_id
final_fate_guide_id
order_id
}
validation_references {
customer_iprs
customer_kra
customer_mpesa
customer_duplicate
nok_iprs
nok_mpesa
nok_duplicate
risk
mpesa_statement
liveness
pre_screening
}
application_type
normal_high_deposit
activeValidationRecords {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
credit_call {
call_details_id
call_type
credit_call_link
}
call_disposition_id
submission_source
leads_screens {
customer
product
consent
termsAndConditions
kycDocuments
creditQuestions
}
prospects_screens {
liveness
nextOfKin
product
images
}
liveness_check {
method
link
}
consent {
sales_approval
terms_and_conditions
source_of_information
verified
verification_phone
referrer_name
created_at
otp
verified_at
}
staff {
scorer {
...ApplicationStaffMemberGraphQLFragment
}
caller {
...ApplicationStaffMemberGraphQLFragment
}
decisioner {
...ApplicationStaffMemberGraphQLFragment
}
sales_agent {
...ApplicationSalesAgentGraphQLFragment
}
submitting_agent {
...ApplicationSalesAgentGraphQLFragment
}
screener {
...ApplicationSalesAgentGraphQLFragment
}
seller {
...ApplicationSalesAgentGraphQLFragment
}
sfm {
...ApplicationSalesAgentGraphQLFragment
}
}
creditProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
customerProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
salesAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
submittingAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
sfmAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
active_resubmission {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
createdAt
updatedAt
callDisposition {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
validation_records {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
active_validation_records {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
creditCallDetails {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
activeCreditPricePlan {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
}
}
Variables
{"applicationId": 4}
Response
{
"data": {
"moveApplicationToPrescreening": {
"_id": "4",
"customer_id": "xyz789",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["xyz789"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "abc123",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [
ValidationRecordGraphQLEntity
],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
}
}
moveGroup
Response
Returns a GroupObjectType!
Arguments
| Name | Description |
|---|---|
input - MoveGroupInput!
|
Example
Query
mutation moveGroup($input: MoveGroupInput!) {
moveGroup(input: $input) {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
childrenDetails {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{"input": MoveGroupInput}
Response
{
"data": {
"moveGroup": {
"_id": "abc123",
"keycloak_id": "xyz789",
"name": "xyz789",
"realm": "xyz789",
"path": "abc123",
"description": "xyz789",
"attributes": {},
"parent_id": "abc123",
"children": ["abc123"],
"level": 987,
"member_keycloak_ids": ["xyz789"],
"member_count": 123,
"synced_at": "2007-12-03T10:15:30Z",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"parent": GroupObjectType,
"childrenDetails": [GroupObjectType]
}
}
}
moveInventoryToLocation
Response
Returns an InventoryObjectType!
Example
Query
mutation moveInventoryToLocation(
$inventoryId: ID!,
$locationId: ID!
) {
moveInventoryToLocation(
inventoryId: $inventoryId,
locationId: $locationId
) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{"inventoryId": "4", "locationId": 4}
Response
{
"data": {
"moveInventoryToLocation": {
"inventory_id": "4",
"product_id": "abc123",
"sku_id": "abc123",
"condition_id": "xyz789",
"seller_catalog_id": "abc123",
"seller_id": "xyz789",
"serial_number": "xyz789",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": true,
"qc_report": QCReportType,
"qc_report_link": "abc123",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 987.65,
"contract_id": "abc123",
"mdm_status": {},
"batch_number": "abc123",
"location_id": "abc123",
"inspection_report": "abc123",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "abc123",
"supplier_code": "abc123",
"supplier_order_reference": "xyz789",
"customer_id": "abc123",
"sale_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
}
}
moveRepairToTechnician
Response
Returns a RepairObjectType!
Arguments
| Name | Description |
|---|---|
orderId - ID!
|
Example
Query
mutation moveRepairToTechnician($orderId: ID!) {
moveRepairToTechnician(orderId: $orderId) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{"orderId": "4"}
Response
{
"data": {
"moveRepairToTechnician": {
"repair_id": 4,
"repair_display_id": "abc123",
"requires_technician": false,
"inventory_id": "abc123",
"customer_id": "abc123",
"original_sale_id": "xyz789",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "xyz789",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 987.65,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
}
}
partner_module_mutations
Description
Access partner module operations
Response
Returns a PartnerModuleNamespace!
Example
Query
mutation partner_module_mutations {
partner_module_mutations {
partnerProfile {
createPartnerProfile {
...PartnerProfileObjectTypeFragment
}
updatePartnerProfile {
...PartnerProfileObjectTypeFragment
}
updatePartnerStatus {
...PartnerProfileObjectTypeFragment
}
deletePartnerProfile
partnerProfile {
...PartnerProfileObjectTypeFragment
}
partnerProfileByFilters {
...PartnerProfileObjectTypeFragment
}
partnerProfiles {
...PartnerProfileObjectTypeFragment
}
directReports {
...PartnerProfileObjectTypeFragment
}
allDownlines {
...PartnerProfileObjectTypeFragment
}
ancestors {
...PartnerProfileObjectTypeFragment
}
parentPartner {
...PartnerProfileObjectTypeFragment
}
partnerExists
partnersProfileOffset {
...OffsetPaginatedPartnerProfilesFragment
}
partnersProfileCursor {
...CursorPaginatedPartnerProfilesFragment
}
}
cohort {
cohort {
...CohortObjectTypeFragment
}
cohortByCohortId {
...CohortObjectTypeFragment
}
cohortbyFilters {
...CohortObjectTypeFragment
}
checkCohortCapacity
checkCohortAvailableCapacity
cohortsOffset {
...OffsetPaginatedCohortsFragment
}
cohortsCursor {
...CursorPaginatedCohortsFragment
}
createCohort {
...CohortObjectTypeFragment
}
updateCohort {
...CohortObjectTypeFragment
}
updateCohortStatus {
...CohortObjectTypeFragment
}
addAgentToCohort {
...CohortObjectTypeFragment
}
removeAgentFromCohort {
...CohortObjectTypeFragment
}
assignTrainerToCohort {
...CohortObjectTypeFragment
}
removeTrainerFromCohort {
...CohortObjectTypeFragment
}
startCohort {
...CohortObjectTypeFragment
}
completeCohort {
...CohortObjectTypeFragment
}
cancelCohort {
...CohortObjectTypeFragment
}
graduateAgentFromCohort
deleteCohort
}
agentProfile {
agentProfile {
...AgentProfileObjectTypeFragment
}
agentProfileByUserId {
...AgentProfileObjectTypeFragment
}
agentProfileByFilters {
...AgentProfileObjectTypeFragment
}
agentProfiles {
...AgentProfileObjectTypeFragment
}
agentExists
agentProfilesOffset {
...OffsetPaginatedAgentProfilesFragment
}
agentProfilesCursor {
...CursorPaginatedAgentProfilesFragment
}
updateAgentProfile {
...AgentProfileObjectTypeFragment
}
updateAgentStatus {
...AgentProfileObjectTypeFragment
}
deleteAgent
}
internalStaff {
internalStaffProfile {
...InternalStaffProfileObjectTypeFragment
}
internalStaffProfileByFilters {
...InternalStaffProfileObjectTypeFragment
}
internalStaffProfileAll {
...InternalStaffProfileObjectTypeFragment
}
internalStaffOffset {
...OffsetPaginatedInternalStaffProfilesFragment
}
internalStaffCursor {
...CursorPaginatedInternalStaffProfilesFragment
}
staffExists
createInternalStaffProfile {
...InternalStaffProfileObjectTypeFragment
}
updateInternalStaffProfile {
...InternalStaffProfileObjectTypeFragment
}
assignStaffToShop {
...InternalStaffProfileObjectTypeFragment
}
assignStaffToRegion {
...InternalStaffProfileObjectTypeFragment
}
updateStaffAvailability {
...InternalStaffProfileObjectTypeFragment
}
removeStaffFromPartners {
...InternalStaffProfileObjectTypeFragment
}
removeStaffFromShop {
...InternalStaffProfileObjectTypeFragment
}
}
partnerKyc {
submitIndividualKYC {
...PartnerProfileObjectTypeFragment
}
submitOrganizationKYC {
...PartnerProfileObjectTypeFragment
}
submitStaffKYC {
...InternalStaffProfileObjectTypeFragment
}
reviewKYC {
...AgentProfileObjectTypeFragment
}
requestPartnerKYCResubmission {
...AgentProfileObjectTypeFragment
}
requestStaffKYCResubmission {
...AgentProfileObjectTypeFragment
}
partnersWithPendingKYC {
...AgentProfileObjectTypeFragment
}
partnersWithRejectedKYC {
...AgentProfileObjectTypeFragment
}
partnersWithIncompleteKYC {
...AgentProfileObjectTypeFragment
}
partnersWithApprovedKYC {
...AgentProfileObjectTypeFragment
}
getStaffKYC {
...InternalStaffProfileObjectTypeFragment
}
}
onlineAgent {
createOnlineAgent {
...PartnerProfileObjectTypeFragment
}
createSuperAgent {
...PartnerProfileObjectTypeFragment
}
updateOnlineAgent {
...PartnerProfileObjectTypeFragment
}
updateSuperAgent {
...PartnerProfileObjectTypeFragment
}
upgradeOnlineAgentToSuperAgent {
...PartnerProfileObjectTypeFragment
}
onlineAgentsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
superAgentsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
}
leadGeneration {
createLeadGeneration {
...PartnerProfileObjectTypeFragment
}
updateLeadGeneration {
...PartnerProfileObjectTypeFragment
}
leadGenerationOffset {
...OffsetPaginatedPartnerProfilesFragment
}
}
offlineAgent {
createOfflineAgent {
...PartnerProfileObjectTypeFragment
}
updateOfflineAgent {
...PartnerProfileObjectTypeFragment
}
offlineAgentsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
}
externalShop {
createExternalShopOwner {
...PartnerProfileObjectTypeFragment
}
createShopAttendant {
...PartnerProfileObjectTypeFragment
}
updateShopOwner {
...PartnerProfileObjectTypeFragment
}
updateShopAttendant {
...PartnerProfileObjectTypeFragment
}
}
dealer {
createDealerOwner {
...PartnerProfileObjectTypeFragment
}
createDealerAgent {
...PartnerProfileObjectTypeFragment
}
updateDealerOwner {
...PartnerProfileObjectTypeFragment
}
updateDealerAgent {
...PartnerProfileObjectTypeFragment
}
dealersOffset {
...OffsetPaginatedPartnerProfilesFragment
}
dealersCursor {
...CursorPaginatedPartnerProfilesFragment
}
}
telesalesAgent {
createTelesalesAgent {
...InternalStaffProfileObjectTypeFragment
}
updateTelesalesAgent {
...InternalStaffProfileObjectTypeFragment
}
telesalesAgent {
...InternalStaffProfileObjectTypeFragment
}
telesalesAgentByFilters {
...InternalStaffProfileObjectTypeFragment
}
telesalesAgents {
...InternalStaffProfileObjectTypeFragment
}
telesalesAgentsOffset {
...OffsetPaginatedInternalStaffProfilesFragment
}
telesalesAgentsCursor {
...CursorPaginatedInternalStaffProfilesFragment
}
}
telesalesParentAgent {
telesalesParentAgents {
...PartnerProfileObjectTypeFragment
}
telesalesParentAgentsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
telesalesParentAgentsCursor {
...CursorPaginatedPartnerProfilesFragment
}
telesalesAgentsByParent {
...InternalStaffProfileObjectTypeFragment
}
telesalesAgentsByParentOffset {
...OffsetPaginatedInternalStaffProfilesFragment
}
telesalesAgentsByParentCursor {
...CursorPaginatedInternalStaffProfilesFragment
}
createTelesalesParentAgent {
...PartnerProfileObjectTypeFragment
}
updateTelesalesParentAgent {
...PartnerProfileObjectTypeFragment
}
deleteTelesalesParentAgent
}
moShop {
createShopOwner {
...PartnerProfileObjectTypeFragment
}
createShopAttendant {
...InternalStaffProfileObjectTypeFragment
}
updateShopOwner {
...PartnerProfileObjectTypeFragment
}
updateShopAttendant {
...PartnerProfileObjectTypeFragment
}
shopsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
shopsCursor {
...CursorPaginatedPartnerProfilesFragment
}
}
partnerOwner {
createPartnerOwner {
...PartnerProfileObjectTypeFragment
}
createPartnerShopAttendant {
...PartnerProfileObjectTypeFragment
}
updatePartnerOwner {
...PartnerProfileObjectTypeFragment
}
updatePartnerShopAttendant {
...PartnerProfileObjectTypeFragment
}
createSellerForPartner {
...PartnerProfileObjectTypeFragment
}
partnerOwnersOffset {
...OffsetPaginatedPartnerProfilesFragment
}
}
trainer {
createTrainer {
...InternalStaffProfileObjectTypeFragment
}
updateTrainer {
...InternalStaffProfileObjectTypeFragment
}
trainersOffset {
...OffsetPaginatedInternalStaffProfilesFragment
}
}
sfm {
createSFM {
...InternalStaffProfileObjectTypeFragment
}
createShopManager {
...InternalStaffProfileObjectTypeFragment
}
createPartnerPromoter {
...InternalStaffProfileObjectTypeFragment
}
updateSFM {
...InternalStaffProfileObjectTypeFragment
}
updateShopManager {
...InternalStaffProfileObjectTypeFragment
}
updatePartnerPromoter {
...InternalStaffProfileObjectTypeFragment
}
removePromoterPartners {
...InternalStaffProfileObjectTypeFragment
}
transferPromoterPartners {
...InternalStaffProfileObjectTypeFragment
}
transferSfmPartners {
...InternalStaffProfileObjectTypeFragment
}
sfmStaffOffset {
...OffsetPaginatedInternalStaffProfilesFragment
}
}
retailer {
createRetailerOrganization {
...PartnerProfileObjectTypeFragment
}
updateRetailerOrganization {
...PartnerProfileObjectTypeFragment
}
createRetailerOutlet {
...PartnerProfileObjectTypeFragment
}
updateRetailerOutlet {
...PartnerProfileObjectTypeFragment
}
removeRetailerOutlet {
...PartnerProfileObjectTypeFragment
}
createRetailOutletStaff {
...InternalStaffProfileObjectTypeFragment
}
updateRetailOutletStaff {
...InternalStaffProfileObjectTypeFragment
}
assignStaffToOutlet {
...PartnerProfileObjectTypeFragment
}
transferStaffBetweenOutlets {
...PartnerProfileObjectTypeFragment
}
findRetailerOrganizationById {
...PartnerProfileObjectTypeFragment
}
findOutletsByRetailerId {
...RetailerOutletObjectTypeFragment
}
findOutletById {
...RetailerOutletObjectTypeFragment
}
retailerOrganizationsOffset {
...OffsetPaginatedPartnerProfilesFragment
}
retailerOrganizationsCursor {
...CursorPaginatedPartnerProfilesFragment
}
}
agentPermissions {
agentTypePermissions {
...AgentTypePermissionsObjectTypeFragment
}
allAgentTypePermissions {
...AgentTypePermissionsObjectTypeFragment
}
permissionCatalog {
...PermissionCatalogTypeFragment
}
setAgentTypePermissions {
...AgentTypePermissionsObjectTypeFragment
}
resetAgentTypePermissions {
...AgentTypePermissionsObjectTypeFragment
}
deleteChildPermissions {
...AgentTypePermissionsObjectTypeFragment
}
}
}
}
Response
{
"data": {
"partner_module_mutations": {
"partnerProfile": PartnerProfileNamespace,
"cohort": CohortNamespace,
"agentProfile": AgentProfileNamespace,
"internalStaff": InternalStaffNamespace,
"partnerKyc": PartnerKycNamespace,
"onlineAgent": OnlineAgentNamespace,
"leadGeneration": LeadGenerationNamespace,
"offlineAgent": OfflineAgentNamespace,
"externalShop": ExternalShopNamespace,
"dealer": DealerNamespace,
"telesalesAgent": TelesalesAgentNamespace,
"telesalesParentAgent": TelesalesParentAgentNamespace,
"moShop": MoShopNamespace,
"partnerOwner": PartnerOwnerNamespace,
"trainer": TrainerNamespace,
"sfm": SfmNamespace,
"retailer": RetailerNamespace,
"agentPermissions": AgentPermissionsNamespace
}
}
}
payment_module_mutations
Description
Access payment module operations
Response
Returns a PaymentModuleNamespace!
Example
Query
mutation payment_module_mutations {
payment_module_mutations {
paymentOrchestrator {
collectMobileMoneyPayment {
...PaymentProviderResultTypeFragment
}
collectCardPayment {
...PaymentProviderResultTypeFragment
}
collectBankPayment {
...PaymentProviderResultTypeFragment
}
collectCryptoPayment {
...PaymentProviderResultTypeFragment
}
sendMobileMoneyPayment {
...PaymentProviderResultTypeFragment
}
sendCardPayment {
...PaymentProviderResultTypeFragment
}
sendBankPayment {
...PaymentProviderResultTypeFragment
}
sendCryptoPayment {
...PaymentProviderResultTypeFragment
}
}
payments {
createPayment {
...PaymentsEntityTypeFragment
}
createRawPayment {
...PaymentsEntityTypeFragment
}
getPaymentById {
...PaymentsEntityTypeFragment
}
payments {
...PaymentsEntityTypeFragment
}
paymentByFilters {
...PaymentsEntityTypeFragment
}
paymentsWithCursorPagination {
...CursorPaginatedPaymentsFragment
}
completePayment {
...PaymentsEntityTypeFragment
}
failPayment {
...PaymentsEntityTypeFragment
}
reversePayment {
...PaymentsEntityTypeFragment
}
updatePayment {
...PaymentsEntityTypeFragment
}
updateManyPayments
manuallyReconcilePayment {
...PaymentsEntityTypeFragment
}
revokePaymentByAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
undoPaymentRevocation {
...PaymentAdjustmentsEntityTypeFragment
}
allocatePaymentToRepairSale {
...RepairAllocationResultTypeFragment
}
correctCashSaleOverAllocations {
...CorrectCashSaleOverAllocationsResultTypeFragment
}
reallocateRepairSalesToOutstanding {
...ReallocateRepairSalesResultTypeFragment
}
deletePayment
deleteManyPayments
paymentCount
uploadMpesaBulkDump
}
paymentAdjustments {
createPaymentAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
paymentAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
paymentAdjustmentByFilters {
...PaymentAdjustmentsEntityTypeFragment
}
paymentAdjustments {
...PaymentAdjustmentsEntityTypeFragment
}
paymentAdjustmentsOffset {
...OffsetPaginatedPaymentAdjustmentsFragment
}
paymentAdjustmentsCursor {
...CursorPaginatedPaymentAdjustmentsFragment
}
updatePaymentAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
deletePaymentAdjustment
effectPaymentAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
revokePaymentAdjustment {
...PaymentAdjustmentsEntityTypeFragment
}
getTotalAdjustmentsByCustomer
paymentAdjustmentCount
uploadAdjustmentsBulkDump
}
}
}
Response
{
"data": {
"payment_module_mutations": {
"paymentOrchestrator": PaymentOrchestratorNamespace,
"payments": PaymentsNamespace,
"paymentAdjustments": PaymentAdjustmentsNamespace
}
}
}
performReturnsAction
Description
Perform a state-machine action on a returns request. All status transitions must go through this mutation.
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - PerformReturnsActionInput!
|
Example
Query
mutation performReturnsAction(
$id: ID!,
$input: PerformReturnsActionInput!
) {
performReturnsAction(
id: $id,
input: $input
) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{
"id": "4",
"input": PerformReturnsActionInput
}
Response
{
"data": {
"performReturnsAction": {
"_id": "4",
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "abc123",
"sale_id": "abc123",
"ticket_id": "abc123",
"current_device_id": "abc123",
"target_device_model": "abc123",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "abc123",
"cxc_notes": "xyz789",
"submitted_by": "xyz789",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 987.65,
"amount_paid_to_date": 987.65,
"current_device_deposit": 987.65,
"new_device_deposit": 987.65,
"new_device_price": 123.45,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": true,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "abc123",
"lane_owner": "abc123",
"superseded_by_request_id": "xyz789",
"supersedes_request_id": "xyz789",
"workflow_switch_reason": "abc123",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": true,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "abc123",
"fulfillment_mode": "abc123",
"mpesa_reference": "abc123",
"upgrade_policy_mode": "xyz789",
"customer_age_weeks_at_decision": 123,
"new_credit_sale_id": 4,
"new_credit_sale_activated_at": "abc123",
"topup_confirmed_at": "xyz789",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": false,
"pending_detach_inventory_id": "4",
"manual_detach_detached_at": "abc123",
"manual_detach_inventory_id": "4",
"linked_application_id": 4
}
}
}
processKycDocuments
Response
Returns an ApplicationEntityGraphQL!
Arguments
| Name | Description |
|---|---|
input - ProcessKycDocumentsInput!
|
Example
Query
mutation processKycDocuments($input: ProcessKycDocumentsInput!) {
processKycDocuments(input: $input) {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
mpesa_statement
bank_statement
back_id
front_id
selfie
}
customer {
personal_info {
...ApplicationPersonalInfoGraphQLFragment
}
identification {
...ApplicationIdentificationGraphQLFragment
}
location {
...ApplicationLocationGraphQLFragment
}
employment {
...ApplicationEmploymentGraphQLFragment
}
credit_history {
...ApplicationCreditHistoryGraphQLFragment
}
product {
...ApplicationProductGraphQLFragment
}
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
previous_next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
credit {
credit
credit_process
pending_kyc_tags
system_crb_score
user_crb_score
final_risk_score
status
prospect_status
resubmission_pending_review
customer_bucket
customer_tag
prospect_model
check_by_risk_model
fate_guide
risk_flag
combined_risk_flag
deposit_requirement
advice_customer
customer_credit_fate_reason
last_modified_credit_status
approved_at
product_id
product_name
product_inventory_id
price_plan_id
price_plan_code
price_plan_name
product_cash_price
resubmission_link
initial_weeks
risk_model
validity {
...ApplicationValidityGraphQLFragment
}
metadata
exemption_record {
...ApplicationExemptionRecordGraphQLFragment
}
}
risk {
risk_flag
previous_loans
high_deposit_overide
}
delivery {
delivery_id
rider_id
mpesa_code
delivery_code
rider_submitted_otp
otp_expiry_time
location {
...ApplicationLocationGraphQLFragment
}
front_id
back_id
delivery_status
notes
order_processing {
...SalesProcessingJobStatusGraphQLFragment
}
sale_creation {
...SalesProcessingJobStatusGraphQLFragment
}
}
legacy_references {
lead_id
prospect_id
application_id
}
metadata
timeline {
lead_created
lead_updated
prospect_created
prospect_updated
customer_created
ready_for_scoring
ready_for_calling
ready_for_decision
called_at
scored_at
decisioned_at
device_needed
liveness_created_date
ready_for_screening
screened_at
paused_financial_statement_at
prospect_submitted_at
resubmission_submitted_at
scoring_started_at
first_scored_at
calling_started_at
first_called_at
decision_started_at
first_decisioned_at
last_modified_credit_status_at
}
references {
lead_id
prospect_id
customer_id
crb_transaction_id
resubmission_id
fate_guide_id
final_fate_guide_id
order_id
}
validation_references {
customer_iprs
customer_kra
customer_mpesa
customer_duplicate
nok_iprs
nok_mpesa
nok_duplicate
risk
mpesa_statement
liveness
pre_screening
}
application_type
normal_high_deposit
activeValidationRecords {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
credit_call {
call_details_id
call_type
credit_call_link
}
call_disposition_id
submission_source
leads_screens {
customer
product
consent
termsAndConditions
kycDocuments
creditQuestions
}
prospects_screens {
liveness
nextOfKin
product
images
}
liveness_check {
method
link
}
consent {
sales_approval
terms_and_conditions
source_of_information
verified
verification_phone
referrer_name
created_at
otp
verified_at
}
staff {
scorer {
...ApplicationStaffMemberGraphQLFragment
}
caller {
...ApplicationStaffMemberGraphQLFragment
}
decisioner {
...ApplicationStaffMemberGraphQLFragment
}
sales_agent {
...ApplicationSalesAgentGraphQLFragment
}
submitting_agent {
...ApplicationSalesAgentGraphQLFragment
}
screener {
...ApplicationSalesAgentGraphQLFragment
}
seller {
...ApplicationSalesAgentGraphQLFragment
}
sfm {
...ApplicationSalesAgentGraphQLFragment
}
}
creditProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
customerProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
salesAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
submittingAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
sfmAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
active_resubmission {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
createdAt
updatedAt
callDisposition {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
validation_records {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
active_validation_records {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
creditCallDetails {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
activeCreditPricePlan {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
}
}
Variables
{"input": ProcessKycDocumentsInput}
Response
{
"data": {
"processKycDocuments": {
"_id": "4",
"customer_id": "abc123",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["abc123"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "abc123",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [
ValidationRecordGraphQLEntity
],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
}
}
processKycImages
Response
Returns a ProcessKycImagesResult!
Arguments
| Name | Description |
|---|---|
input - ProcessKycImagesInput!
|
Example
Query
mutation processKycImages($input: ProcessKycImagesInput!) {
processKycImages(input: $input) {
applicationId
idFront {
_id
domain
target
target_id
type
name
url
content_type
storage_provider
created_at
}
idBack {
_id
domain
target
target_id
type
name
url
content_type
storage_provider
created_at
}
selfie {
_id
domain
target
target_id
type
name
url
content_type
storage_provider
created_at
}
}
}
Variables
{"input": ProcessKycImagesInput}
Response
{
"data": {
"processKycImages": {
"applicationId": 4,
"idFront": KycDocumentType,
"idBack": KycDocumentType,
"selfie": KycDocumentType
}
}
}
processReferralRewards
Response
Returns a ProcessReferralResult!
Arguments
| Name | Description |
|---|---|
input - ProcessReferralRewardsInput!
|
Example
Query
mutation processReferralRewards($input: ProcessReferralRewardsInput!) {
processReferralRewards(input: $input) {
success
message
error
}
}
Variables
{"input": ProcessReferralRewardsInput}
Response
{
"data": {
"processReferralRewards": {
"success": false,
"message": "xyz789",
"error": "abc123"
}
}
}
processRefund
Description
Mark a refund as processing (payment initiated)
Response
Returns a RefundGraphQL!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
refund_method - RefundMethod
|
|
transaction_reference - String
|
Example
Query
mutation processRefund(
$id: ID!,
$refund_method: RefundMethod,
$transaction_reference: String
) {
processRefund(
id: $id,
refund_method: $refund_method,
transaction_reference: $transaction_reference
) {
refund_id
customer_id
sale_id
returns_request_id
order_id
loan_contract_id
source_payment_id
adjustment_id
refund_workflow_type
refund_amount
status
refund_method
transaction_reference
submitted_by
submitted_by_name
actor_id
approved_by
approved_by_name
customer_name
customer_phone
customer_official_id
approved_at
processed_at
completed_at
notes
rejection_reason
returns_request_type
created_at
updated_at
}
}
Variables
{
"id": "4",
"refund_method": "MPESA",
"transaction_reference": "xyz789"
}
Response
{
"data": {
"processRefund": {
"refund_id": "4",
"customer_id": "abc123",
"sale_id": "abc123",
"returns_request_id": "abc123",
"order_id": "xyz789",
"loan_contract_id": "abc123",
"source_payment_id": "xyz789",
"adjustment_id": "xyz789",
"refund_workflow_type": "RETURN",
"refund_amount": 123.45,
"status": "PENDING",
"refund_method": "MPESA",
"transaction_reference": "xyz789",
"submitted_by": "xyz789",
"submitted_by_name": "abc123",
"actor_id": "xyz789",
"approved_by": "xyz789",
"approved_by_name": "xyz789",
"customer_name": "abc123",
"customer_phone": "xyz789",
"customer_official_id": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"processed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"notes": "abc123",
"rejection_reason": "xyz789",
"returns_request_type": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
processTransaction
Response
Returns a RawWalletTransactionsDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
mutation processTransaction($id: ID!) {
processTransaction(id: $id) {
wallet_transaction_id
wallet_id
customer_id
sale_id
wallet_transaction_ref_id
wallet_transaction_type
wallet_transaction_sub_type
wallet_transaction_amount
wallet_transaction_balance_before
wallet_transaction_balance_after
wallet_transaction_days_value
wallet_transaction_points_value
wallet_transaction_status
reference
wallet_transaction_description
wallet_transaction_metadata
wallet_transaction_created_at
wallet_transaction_updated_at
wallet_transaction_completed_at
}
}
Variables
{"id": 4}
Response
{
"data": {
"processTransaction": {
"wallet_transaction_id": 4,
"wallet_id": 4,
"customer_id": "4",
"sale_id": 4,
"wallet_transaction_ref_id": "4",
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 123.45,
"wallet_transaction_balance_before": 123.45,
"wallet_transaction_balance_after": 987.65,
"wallet_transaction_days_value": 987.65,
"wallet_transaction_points_value": 123.45,
"wallet_transaction_status": "PENDING",
"reference": "abc123",
"wallet_transaction_description": "abc123",
"wallet_transaction_metadata": {},
"wallet_transaction_created_at": "2007-12-03T10:15:30Z",
"wallet_transaction_updated_at": "2007-12-03T10:15:30Z",
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
}
}
prospectComplete
Description
Check if a prospect is complete and submit to credit process if so
Response
Returns a ProspectCompleteResultGraphQL!
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
mutation prospectComplete($applicationId: ID!) {
prospectComplete(applicationId: $applicationId) {
purchaseMode
complete
duplicatePassed
iprsPassed
mpesaPassed
livenessPassed
riskPassed
kraPassed
screens {
liveness
nextOfKin
product
images
}
}
}
Variables
{"applicationId": "4"}
Response
{
"data": {
"prospectComplete": {
"purchaseMode": "CASH",
"complete": false,
"duplicatePassed": true,
"iprsPassed": false,
"mpesaPassed": false,
"livenessPassed": true,
"riskPassed": true,
"kraPassed": false,
"screens": ProspectsScreensGraphQL
}
}
}
publishDraftPricePlan
Response
Returns a PricePlanObjectType!
Arguments
| Name | Description |
|---|---|
input - PublishDraftInput!
|
Example
Query
mutation publishDraftPricePlan($input: PublishDraftInput!) {
publishDraftPricePlan(input: $input) {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
within_months
discount_percent
}
status
is_private
version
metadata
created_at
updated_at
tier {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
versions {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"input": PublishDraftInput}
Response
{
"data": {
"publishDraftPricePlan": {
"id": "4",
"tier_id": "xyz789",
"parent_plan_id": "xyz789",
"code": "abc123",
"name": "abc123",
"min_device_value": 987.65,
"max_device_value": 987.65,
"deposit_percent": 123.45,
"deposit_percent_high": 987.65,
"subsequent_loan_discount_percent": 123.45,
"loan_multiplier": 123.45,
"loan_multiplier_high": 987.65,
"mocare_percent": 123.45,
"duration_months": 123,
"duration_months_high": 987,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": true,
"version": 987,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
}
}
recalculateGapAnalysis
Description
Recalculate gap analysis for a completed M-Pesa statement. Patches the record to retrigger gap analysis computation. Set updateValidation to true to also re-run phone match, income, and validation record updates.
Response
Returns a MoneyStatementAnalysisDto!
Arguments
| Name | Description |
|---|---|
input - RecalculateGapAnalysisInput!
|
Example
Query
mutation recalculateGapAnalysis($input: RecalculateGapAnalysisInput!) {
recalculateGapAnalysis(input: $input) {
id
target_id
target
provider_reference
document_id
status
type
provider
name
phone_number
secondary_phone_number
email
duration
statement_period
agent_deposit
airtime_highest
internet_bundle_highest
persons_received_from_total
banks_received
mfis_received
mobile_lenders_received
healthcare_received
saccos_received
insurance_received
betting_received
others_received
airtime_total
internet_bundle_total
total_paid_in
total_paid_in_average
total_others
affordability
average_income
twelve_months_loan_price
gap_analysis {
pass
status
slope
average_disposable
month_5_disposable
month_6_disposable
standard_deviation
coefficient_of_variation
criteria {
...GapAnalysisCriteriaGraphQLFragment
}
monthly_data {
...GapAnalysisMonthlyDataGraphQLFragment
}
}
statement_source
income
airtime_category
income_paid_in
income_cover
jsonData
raw
createdAt
updatedAt
}
}
Variables
{"input": RecalculateGapAnalysisInput}
Response
{
"data": {
"recalculateGapAnalysis": {
"id": 4,
"target_id": "xyz789",
"target": "LEAD",
"provider_reference": "abc123",
"document_id": "abc123",
"status": "UNKNOWN",
"type": "MPESA",
"provider": "SPINMOBILE",
"name": "abc123",
"phone_number": "xyz789",
"secondary_phone_number": "xyz789",
"email": "xyz789",
"duration": 123,
"statement_period": "xyz789",
"agent_deposit": 123.45,
"airtime_highest": 987.65,
"internet_bundle_highest": 123.45,
"persons_received_from_total": 123.45,
"banks_received": 987.65,
"mfis_received": 987.65,
"mobile_lenders_received": 123.45,
"healthcare_received": 987.65,
"saccos_received": 123.45,
"insurance_received": 123.45,
"betting_received": 987.65,
"others_received": 123.45,
"airtime_total": 123.45,
"internet_bundle_total": 123.45,
"total_paid_in": 123.45,
"total_paid_in_average": 987.65,
"total_others": 987.65,
"affordability": 123.45,
"average_income": 123.45,
"twelve_months_loan_price": 123.45,
"gap_analysis": GapAnalysisResultGraphQL,
"statement_source": "WEBHOOK",
"income": 987.65,
"airtime_category": "xyz789",
"income_paid_in": 123.45,
"income_cover": "abc123",
"jsonData": {},
"raw": "xyz789",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
reconcileOrder
Description
Reconcile an order by recalculating all totals from order items
Response
Returns an OrderObjectType!
Arguments
| Name | Description |
|---|---|
order_id - ID!
|
Example
Query
mutation reconcileOrder($order_id: ID!) {
reconcileOrder(order_id: $order_id) {
order_id
customer_id
order_status
payment_status
shipping_address {
street
city
state
postal_code
country
geo {
...OrderGeoFragment
}
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
orderItems {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
deliveries {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
sales {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
deliveryCalls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
}
}
Variables
{"order_id": "4"}
Response
{
"data": {
"reconcileOrder": {
"order_id": "4",
"customer_id": 4,
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "xyz789",
"sub_total": 987.65,
"total_discount": 987.65,
"delivery_fee": 123.45,
"service_fee": 123.45,
"tax_amount": 123.45,
"total_amount": 987.65,
"application_id": "xyz789",
"sale_agent_id": "abc123",
"submitting_agent_id": "abc123",
"manual_override": true,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
}
}
reconcileOrders
Description
Reconcile multiple orders in batch
Response
Returns [OrderObjectType!]!
Arguments
| Name | Description |
|---|---|
order_ids - [ID!]!
|
Example
Query
mutation reconcileOrders($order_ids: [ID!]!) {
reconcileOrders(order_ids: $order_ids) {
order_id
customer_id
order_status
payment_status
shipping_address {
street
city
state
postal_code
country
geo {
...OrderGeoFragment
}
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
orderItems {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
deliveries {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
sales {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
deliveryCalls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
}
}
Variables
{"order_ids": [4]}
Response
{
"data": {
"reconcileOrders": [
{
"order_id": 4,
"customer_id": 4,
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "abc123",
"sub_total": 987.65,
"total_discount": 987.65,
"delivery_fee": 987.65,
"service_fee": 123.45,
"tax_amount": 123.45,
"total_amount": 123.45,
"application_id": "xyz789",
"sale_agent_id": "abc123",
"submitting_agent_id": "xyz789",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
]
}
}
refreshGroupCache
refreshRoleCache
refreshToken
Response
Returns an AuthResponse!
Arguments
| Name | Description |
|---|---|
input - RefreshTokenInput!
|
Example
Query
mutation refreshToken($input: RefreshTokenInput!) {
refreshToken(input: $input) {
access_token
refresh_token
expires_in
refresh_expires_in
token_type
user {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
}
}
Variables
{"input": RefreshTokenInput}
Response
{
"data": {
"refreshToken": {
"access_token": "abc123",
"refresh_token": "xyz789",
"expires_in": 987,
"refresh_expires_in": 123,
"token_type": "xyz789",
"user": UserObjectType,
"customer": RawCustomersDto
}
}
}
rejectCustomerReferral
Response
Returns a CustomerReferralDto!
Arguments
| Name | Description |
|---|---|
input - RejectCustomerReferralInput!
|
Example
Query
mutation rejectCustomerReferral($input: RejectCustomerReferralInput!) {
rejectCustomerReferral(input: $input) {
referral_id
referrer_customer_id
referee_customer_id
referee_customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
referral_code_used
referral_status
validation_due_date
validated_at
rewards_processed_at
referee_loan_contract_id
referee_opening_date
payment_adjustment_id
referrer_airtime_transaction_id
referee_airtime_transaction_id
created_by
created_at
updated_by
updated_at
}
}
Variables
{"input": RejectCustomerReferralInput}
Response
{
"data": {
"rejectCustomerReferral": {
"referral_id": "4",
"referrer_customer_id": "4",
"referee_customer_id": 4,
"referee_customer": RawCustomersDto,
"referral_code_used": "abc123",
"referral_status": "INCOMPLETE",
"validation_due_date": "2007-12-03T10:15:30Z",
"validated_at": "2007-12-03T10:15:30Z",
"rewards_processed_at": "2007-12-03T10:15:30Z",
"referee_loan_contract_id": "abc123",
"referee_opening_date": "2007-12-03T10:15:30Z",
"payment_adjustment_id": "xyz789",
"referrer_airtime_transaction_id": "abc123",
"referee_airtime_transaction_id": "xyz789",
"created_by": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_by": "abc123",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
rejectProduct
Response
Returns a ProductObjectType!
Example
Query
mutation rejectProduct(
$productId: ID!,
$rejectedBy: ID!,
$reason: String!
) {
rejectProduct(
productId: $productId,
rejectedBy: $rejectedBy,
reason: $reason
) {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Variables
{
"productId": "4",
"rejectedBy": 4,
"reason": "abc123"
}
Response
{
"data": {
"rejectProduct": {
"product_id": 4,
"name": "xyz789",
"slug": "abc123",
"brand": "abc123",
"model": "xyz789",
"category_id": "xyz789",
"category": CategoryObjectType,
"description": "xyz789",
"long_description": "xyz789",
"base_specifications": {},
"primary_image_url": "xyz789",
"images": ["abc123"],
"video_url": "xyz789",
"meta_title": "abc123",
"meta_description": "abc123",
"keywords": ["xyz789"],
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
rejectRefund
Description
Reject a pending refund
Response
Returns a RefundGraphQL!
Example
Query
mutation rejectRefund(
$id: ID!,
$rejection_reason: String!
) {
rejectRefund(
id: $id,
rejection_reason: $rejection_reason
) {
refund_id
customer_id
sale_id
returns_request_id
order_id
loan_contract_id
source_payment_id
adjustment_id
refund_workflow_type
refund_amount
status
refund_method
transaction_reference
submitted_by
submitted_by_name
actor_id
approved_by
approved_by_name
customer_name
customer_phone
customer_official_id
approved_at
processed_at
completed_at
notes
rejection_reason
returns_request_type
created_at
updated_at
}
}
Variables
{"id": 4, "rejection_reason": "xyz789"}
Response
{
"data": {
"rejectRefund": {
"refund_id": 4,
"customer_id": "xyz789",
"sale_id": "xyz789",
"returns_request_id": "abc123",
"order_id": "xyz789",
"loan_contract_id": "abc123",
"source_payment_id": "abc123",
"adjustment_id": "xyz789",
"refund_workflow_type": "RETURN",
"refund_amount": 987.65,
"status": "PENDING",
"refund_method": "MPESA",
"transaction_reference": "xyz789",
"submitted_by": "xyz789",
"submitted_by_name": "xyz789",
"actor_id": "abc123",
"approved_by": "abc123",
"approved_by_name": "abc123",
"customer_name": "xyz789",
"customer_phone": "abc123",
"customer_official_id": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"processed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"notes": "xyz789",
"rejection_reason": "abc123",
"returns_request_type": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
rejectSku
Response
Returns a SkuObjectType!
Example
Query
mutation rejectSku(
$skuId: ID!,
$rejectedBy: ID!,
$reason: String!
) {
rejectSku(
skuId: $skuId,
rejectedBy: $rejectedBy,
reason: $reason
) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{
"skuId": 4,
"rejectedBy": "4",
"reason": "abc123"
}
Response
{
"data": {
"rejectSku": {
"sku_id": "4",
"product_id": "xyz789",
"condition_id": "xyz789",
"parent_sku_id": "abc123",
"level": 123,
"level_attribute_key": "abc123",
"level_attribute_value": "abc123",
"sku_code": "xyz789",
"name": "abc123",
"attributes": {},
"variant_specifications": {},
"msrp_price": 987.65,
"min_seller_price": 987.65,
"max_seller_price": 123.45,
"suggested_retail_price": 123.45,
"effective_price": 123.45,
"images": ["abc123"],
"weight_grams": 987,
"dimensions_mm": "xyz789",
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
}
}
removeRolesToUser
Response
Returns a UserObjectType!
Arguments
| Name | Description |
|---|---|
input - AttachRolesToUserInput!
|
Example
Query
mutation removeRolesToUser($input: AttachRolesToUserInput!) {
removeRolesToUser(input: $input) {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
}
Variables
{"input": AttachRolesToUserInput}
Response
{
"data": {
"removeRolesToUser": {
"_id": 4,
"id": "xyz789",
"keycloak_id": "xyz789",
"username": "abc123",
"email": "abc123",
"first_name": "xyz789",
"surname": "xyz789",
"last_name": "xyz789",
"phone_number": "xyz789",
"role": "xyz789",
"enabled": false,
"user_type": "SYSTEM_ADMIN",
"is_internal": true,
"first_login": "2007-12-03T10:15:30Z",
"last_login": "2007-12-03T10:15:30Z",
"availability_status": "AVAILABLE",
"synced_at": "2007-12-03T10:15:30Z",
"group_memberships": ["xyz789"],
"permissions": ["xyz789"],
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
removeUserFromGroup
Response
Returns a GroupMembershipResponse!
Arguments
| Name | Description |
|---|---|
input - GroupMembershipInput!
|
Example
Query
mutation removeUserFromGroup($input: GroupMembershipInput!) {
removeUserFromGroup(input: $input) {
success
message
group {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{"input": GroupMembershipInput}
Response
{
"data": {
"removeUserFromGroup": {
"success": false,
"message": "abc123",
"group": GroupObjectType
}
}
}
requestOtp
Response
Returns a RequestOtpResponse!
Arguments
| Name | Description |
|---|---|
input - RequestOtpInput!
|
Example
Query
mutation requestOtp($input: RequestOtpInput!) {
requestOtp(input: $input) {
success
message
phone
}
}
Variables
{"input": RequestOtpInput}
Response
{
"data": {
"requestOtp": {
"success": false,
"message": "xyz789",
"phone": "abc123"
}
}
}
resendApplicationOtp
Description
Regenerate and resend the OTP for an application consent
Response
Returns an ApplicationEntityGraphQL!
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
mutation resendApplicationOtp($applicationId: ID!) {
resendApplicationOtp(applicationId: $applicationId) {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
mpesa_statement
bank_statement
back_id
front_id
selfie
}
customer {
personal_info {
...ApplicationPersonalInfoGraphQLFragment
}
identification {
...ApplicationIdentificationGraphQLFragment
}
location {
...ApplicationLocationGraphQLFragment
}
employment {
...ApplicationEmploymentGraphQLFragment
}
credit_history {
...ApplicationCreditHistoryGraphQLFragment
}
product {
...ApplicationProductGraphQLFragment
}
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
previous_next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
credit {
credit
credit_process
pending_kyc_tags
system_crb_score
user_crb_score
final_risk_score
status
prospect_status
resubmission_pending_review
customer_bucket
customer_tag
prospect_model
check_by_risk_model
fate_guide
risk_flag
combined_risk_flag
deposit_requirement
advice_customer
customer_credit_fate_reason
last_modified_credit_status
approved_at
product_id
product_name
product_inventory_id
price_plan_id
price_plan_code
price_plan_name
product_cash_price
resubmission_link
initial_weeks
risk_model
validity {
...ApplicationValidityGraphQLFragment
}
metadata
exemption_record {
...ApplicationExemptionRecordGraphQLFragment
}
}
risk {
risk_flag
previous_loans
high_deposit_overide
}
delivery {
delivery_id
rider_id
mpesa_code
delivery_code
rider_submitted_otp
otp_expiry_time
location {
...ApplicationLocationGraphQLFragment
}
front_id
back_id
delivery_status
notes
order_processing {
...SalesProcessingJobStatusGraphQLFragment
}
sale_creation {
...SalesProcessingJobStatusGraphQLFragment
}
}
legacy_references {
lead_id
prospect_id
application_id
}
metadata
timeline {
lead_created
lead_updated
prospect_created
prospect_updated
customer_created
ready_for_scoring
ready_for_calling
ready_for_decision
called_at
scored_at
decisioned_at
device_needed
liveness_created_date
ready_for_screening
screened_at
paused_financial_statement_at
prospect_submitted_at
resubmission_submitted_at
scoring_started_at
first_scored_at
calling_started_at
first_called_at
decision_started_at
first_decisioned_at
last_modified_credit_status_at
}
references {
lead_id
prospect_id
customer_id
crb_transaction_id
resubmission_id
fate_guide_id
final_fate_guide_id
order_id
}
validation_references {
customer_iprs
customer_kra
customer_mpesa
customer_duplicate
nok_iprs
nok_mpesa
nok_duplicate
risk
mpesa_statement
liveness
pre_screening
}
application_type
normal_high_deposit
activeValidationRecords {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
credit_call {
call_details_id
call_type
credit_call_link
}
call_disposition_id
submission_source
leads_screens {
customer
product
consent
termsAndConditions
kycDocuments
creditQuestions
}
prospects_screens {
liveness
nextOfKin
product
images
}
liveness_check {
method
link
}
consent {
sales_approval
terms_and_conditions
source_of_information
verified
verification_phone
referrer_name
created_at
otp
verified_at
}
staff {
scorer {
...ApplicationStaffMemberGraphQLFragment
}
caller {
...ApplicationStaffMemberGraphQLFragment
}
decisioner {
...ApplicationStaffMemberGraphQLFragment
}
sales_agent {
...ApplicationSalesAgentGraphQLFragment
}
submitting_agent {
...ApplicationSalesAgentGraphQLFragment
}
screener {
...ApplicationSalesAgentGraphQLFragment
}
seller {
...ApplicationSalesAgentGraphQLFragment
}
sfm {
...ApplicationSalesAgentGraphQLFragment
}
}
creditProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
customerProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
salesAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
submittingAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
sfmAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
active_resubmission {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
createdAt
updatedAt
callDisposition {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
validation_records {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
active_validation_records {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
creditCallDetails {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
activeCreditPricePlan {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
}
}
Variables
{"applicationId": "4"}
Response
{
"data": {
"resendApplicationOtp": {
"_id": "4",
"customer_id": "xyz789",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["xyz789"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "abc123",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [
ValidationRecordGraphQLEntity
],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
}
}
resendReturnsConsentOtp
Description
Expire the current pending intent-consent OTP and send a fresh one to the customer.
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
mutation resendReturnsConsentOtp($id: ID!) {
resendReturnsConsentOtp(id: $id) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{"id": 4}
Response
{
"data": {
"resendReturnsConsentOtp": {
"_id": "4",
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "xyz789",
"sale_id": "abc123",
"ticket_id": "xyz789",
"current_device_id": "abc123",
"target_device_model": "xyz789",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "xyz789",
"cxc_notes": "abc123",
"submitted_by": "xyz789",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 123.45,
"amount_paid_to_date": 987.65,
"current_device_deposit": 123.45,
"new_device_deposit": 987.65,
"new_device_price": 123.45,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": false,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "abc123",
"lane_owner": "abc123",
"superseded_by_request_id": "xyz789",
"supersedes_request_id": "xyz789",
"workflow_switch_reason": "abc123",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": false,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "abc123",
"fulfillment_mode": "xyz789",
"mpesa_reference": "abc123",
"upgrade_policy_mode": "abc123",
"customer_age_weeks_at_decision": 987,
"new_credit_sale_id": 4,
"new_credit_sale_activated_at": "abc123",
"topup_confirmed_at": "xyz789",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": true,
"pending_detach_inventory_id": 4,
"manual_detach_detached_at": "abc123",
"manual_detach_inventory_id": 4,
"linked_application_id": "4"
}
}
}
resendReturnsSwapExecutionOtp
Description
Expire pending swap credit acknowledgement OTP and send a fresh SMS (SWAP in AWAITING_FINAL_CONSENT.)
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
mutation resendReturnsSwapExecutionOtp($id: ID!) {
resendReturnsSwapExecutionOtp(id: $id) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{"id": "4"}
Response
{
"data": {
"resendReturnsSwapExecutionOtp": {
"_id": "4",
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "abc123",
"sale_id": "abc123",
"ticket_id": "abc123",
"current_device_id": "abc123",
"target_device_model": "xyz789",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "abc123",
"cxc_notes": "xyz789",
"submitted_by": "abc123",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 123.45,
"amount_paid_to_date": 987.65,
"current_device_deposit": 987.65,
"new_device_deposit": 987.65,
"new_device_price": 987.65,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": true,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "abc123",
"lane_owner": "abc123",
"superseded_by_request_id": "abc123",
"supersedes_request_id": "abc123",
"workflow_switch_reason": "abc123",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": false,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "abc123",
"fulfillment_mode": "abc123",
"mpesa_reference": "abc123",
"upgrade_policy_mode": "abc123",
"customer_age_weeks_at_decision": 123,
"new_credit_sale_id": 4,
"new_credit_sale_activated_at": "xyz789",
"topup_confirmed_at": "abc123",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": true,
"pending_detach_inventory_id": 4,
"manual_detach_detached_at": "xyz789",
"manual_detach_inventory_id": 4,
"linked_application_id": 4
}
}
}
retryReturnsInventorySync
Description
Retry a failed assign/detach inventory sync recorded in metadata.inventory_sync
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
mutation retryReturnsInventorySync($id: ID!) {
retryReturnsInventorySync(id: $id) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{"id": 4}
Response
{
"data": {
"retryReturnsInventorySync": {
"_id": "4",
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "abc123",
"sale_id": "abc123",
"ticket_id": "xyz789",
"current_device_id": "abc123",
"target_device_model": "xyz789",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "xyz789",
"cxc_notes": "abc123",
"submitted_by": "abc123",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 123.45,
"amount_paid_to_date": 123.45,
"current_device_deposit": 987.65,
"new_device_deposit": 123.45,
"new_device_price": 123.45,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": true,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "xyz789",
"lane_owner": "abc123",
"superseded_by_request_id": "abc123",
"supersedes_request_id": "abc123",
"workflow_switch_reason": "xyz789",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": false,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "abc123",
"fulfillment_mode": "xyz789",
"mpesa_reference": "abc123",
"upgrade_policy_mode": "xyz789",
"customer_age_weeks_at_decision": 123,
"new_credit_sale_id": 4,
"new_credit_sale_activated_at": "abc123",
"topup_confirmed_at": "xyz789",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": true,
"pending_detach_inventory_id": 4,
"manual_detach_detached_at": "abc123",
"manual_detach_inventory_id": "4",
"linked_application_id": "4"
}
}
}
reuploadMpesaStatement
Description
Re-enqueue an existing M-Pesa statement document for upload to Spin Mobile given its document ID.
revertPricePlan
Response
Returns a PricePlanObjectType!
Arguments
| Name | Description |
|---|---|
planId - String!
|
Example
Query
mutation revertPricePlan($planId: String!) {
revertPricePlan(planId: $planId) {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
within_months
discount_percent
}
status
is_private
version
metadata
created_at
updated_at
tier {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
versions {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{"planId": "xyz789"}
Response
{
"data": {
"revertPricePlan": {
"id": 4,
"tier_id": "xyz789",
"parent_plan_id": "xyz789",
"code": "xyz789",
"name": "xyz789",
"min_device_value": 123.45,
"max_device_value": 987.65,
"deposit_percent": 123.45,
"deposit_percent_high": 987.65,
"subsequent_loan_discount_percent": 987.65,
"loan_multiplier": 123.45,
"loan_multiplier_high": 123.45,
"mocare_percent": 123.45,
"duration_months": 123,
"duration_months_high": 123,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": true,
"version": 123,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
}
}
splitReturnsCollectionPayment
Description
Split a customer M-Pesa payment between loan/arrears and swap repair (REPAIRS_COST adjustment linked to returns request id)
Response
Arguments
| Name | Description |
|---|---|
input - SplitReturnsCollectionPaymentInput!
|
Example
Query
mutation splitReturnsCollectionPayment($input: SplitReturnsCollectionPaymentInput!) {
splitReturnsCollectionPayment(input: $input) {
payment_id
sales_adjustment_id
repairs_adjustment_id
swap_repair_clearance
}
}
Variables
{"input": SplitReturnsCollectionPaymentInput}
Response
{
"data": {
"splitReturnsCollectionPayment": {
"payment_id": "4",
"sales_adjustment_id": "4",
"repairs_adjustment_id": "4",
"swap_repair_clearance": {}
}
}
}
submitCategoryDocuments
Description
Upload category documents
Response
Returns a String!
Arguments
| Name | Description |
|---|---|
input - SubmitCategoryDocumentsInput!
|
Example
Query
mutation submitCategoryDocuments($input: SubmitCategoryDocumentsInput!) {
submitCategoryDocuments(input: $input)
}
Variables
{"input": SubmitCategoryDocumentsInput}
Response
{
"data": {
"submitCategoryDocuments": "abc123"
}
}
submitProductImages
Description
Upload product images
Response
Returns a String!
Arguments
| Name | Description |
|---|---|
input - SubmitProductImagesInput!
|
Example
Query
mutation submitProductImages($input: SubmitProductImagesInput!) {
submitProductImages(input: $input)
}
Variables
{"input": SubmitProductImagesInput}
Response
{"data": {"submitProductImages": "abc123"}}
switchReturnsWorkflow
Description
Switch an active request into a new workflow type while preserving lineage
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - SwitchReturnsWorkflowInput!
|
Example
Query
mutation switchReturnsWorkflow(
$id: ID!,
$input: SwitchReturnsWorkflowInput!
) {
switchReturnsWorkflow(
id: $id,
input: $input
) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{"id": 4, "input": SwitchReturnsWorkflowInput}
Response
{
"data": {
"switchReturnsWorkflow": {
"_id": "4",
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "xyz789",
"sale_id": "abc123",
"ticket_id": "abc123",
"current_device_id": "abc123",
"target_device_model": "abc123",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "xyz789",
"cxc_notes": "abc123",
"submitted_by": "xyz789",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 123.45,
"amount_paid_to_date": 123.45,
"current_device_deposit": 987.65,
"new_device_deposit": 123.45,
"new_device_price": 987.65,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": false,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "xyz789",
"lane_owner": "abc123",
"superseded_by_request_id": "abc123",
"supersedes_request_id": "xyz789",
"workflow_switch_reason": "xyz789",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": true,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "abc123",
"fulfillment_mode": "abc123",
"mpesa_reference": "abc123",
"upgrade_policy_mode": "abc123",
"customer_age_weeks_at_decision": 987,
"new_credit_sale_id": "4",
"new_credit_sale_activated_at": "xyz789",
"topup_confirmed_at": "xyz789",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": false,
"pending_detach_inventory_id": "4",
"manual_detach_detached_at": "abc123",
"manual_detach_inventory_id": 4,
"linked_application_id": 4
}
}
}
syncAllGroups
Response
Returns [GroupObjectType!]!
Arguments
| Name | Description |
|---|---|
realm - String
|
Example
Query
mutation syncAllGroups($realm: String) {
syncAllGroups(realm: $realm) {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
childrenDetails {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{"realm": "abc123"}
Response
{
"data": {
"syncAllGroups": [
{
"_id": "xyz789",
"keycloak_id": "xyz789",
"name": "abc123",
"realm": "abc123",
"path": "abc123",
"description": "abc123",
"attributes": {},
"parent_id": "abc123",
"children": ["xyz789"],
"level": 123,
"member_keycloak_ids": ["xyz789"],
"member_count": 987,
"synced_at": "2007-12-03T10:15:30Z",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"parent": GroupObjectType,
"childrenDetails": [GroupObjectType]
}
]
}
}
syncAllRoles
Response
Returns [RoleObjectType!]!
Arguments
| Name | Description |
|---|---|
realm - String
|
Example
Query
mutation syncAllRoles($realm: String) {
syncAllRoles(realm: $realm) {
_id
id
name
level
permissions
description
canManage
realm
}
}
Variables
{"realm": "abc123"}
Response
{
"data": {
"syncAllRoles": [
{
"_id": "xyz789",
"id": "abc123",
"name": "abc123",
"level": 123,
"permissions": ["xyz789"],
"description": "abc123",
"canManage": ["xyz789"],
"realm": "abc123"
}
]
}
}
syncGroupFromKeycloak
Response
Returns a GroupObjectType!
Arguments
| Name | Description |
|---|---|
input - SyncGroupInput!
|
Example
Query
mutation syncGroupFromKeycloak($input: SyncGroupInput!) {
syncGroupFromKeycloak(input: $input) {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
childrenDetails {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{"input": SyncGroupInput}
Response
{
"data": {
"syncGroupFromKeycloak": {
"_id": "xyz789",
"keycloak_id": "abc123",
"name": "abc123",
"realm": "abc123",
"path": "abc123",
"description": "abc123",
"attributes": {},
"parent_id": "xyz789",
"children": ["xyz789"],
"level": 123,
"member_keycloak_ids": ["abc123"],
"member_count": 987,
"synced_at": "2007-12-03T10:15:30Z",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"parent": GroupObjectType,
"childrenDetails": [GroupObjectType]
}
}
}
syncRoleFromKeycloak
Response
Returns a RoleObjectType!
Example
Query
mutation syncRoleFromKeycloak(
$realm: String,
$roleName: String,
$keycloakRoleId: String
) {
syncRoleFromKeycloak(
realm: $realm,
roleName: $roleName,
keycloakRoleId: $keycloakRoleId
) {
_id
id
name
level
permissions
description
canManage
realm
}
}
Variables
{
"realm": "xyz789",
"roleName": "xyz789",
"keycloakRoleId": "abc123"
}
Response
{
"data": {
"syncRoleFromKeycloak": {
"_id": "xyz789",
"id": "xyz789",
"name": "abc123",
"level": 123,
"permissions": ["abc123"],
"description": "xyz789",
"canManage": ["xyz789"],
"realm": "xyz789"
}
}
}
syncUserCounts
syncUserRoles
syncUserWithKeycloak
Response
Returns a UserObjectType!
Arguments
| Name | Description |
|---|---|
keycloakUserId - String!
|
Example
Query
mutation syncUserWithKeycloak($keycloakUserId: String!) {
syncUserWithKeycloak(keycloakUserId: $keycloakUserId) {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
}
Variables
{"keycloakUserId": "abc123"}
Response
{
"data": {
"syncUserWithKeycloak": {
"_id": 4,
"id": "xyz789",
"keycloak_id": "xyz789",
"username": "abc123",
"email": "abc123",
"first_name": "xyz789",
"surname": "xyz789",
"last_name": "abc123",
"phone_number": "xyz789",
"role": "abc123",
"enabled": false,
"user_type": "SYSTEM_ADMIN",
"is_internal": true,
"first_login": "2007-12-03T10:15:30Z",
"last_login": "2007-12-03T10:15:30Z",
"availability_status": "AVAILABLE",
"synced_at": "2007-12-03T10:15:30Z",
"group_memberships": ["xyz789"],
"permissions": ["xyz789"],
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
territory_module_mutations
Description
Access territory module operations
Response
Returns a TerritoryModuleNamespace!
Example
Query
mutation territory_module_mutations {
territory_module_mutations {
geography {
countries {
...CountryObjectTypeFragment
}
country {
...CountryObjectTypeFragment
}
countryByFilter {
...CountryObjectTypeFragment
}
regions {
...RegionObjectTypeFragment
}
regionByIsocode {
...RegionObjectTypeFragment
}
region {
...RegionObjectTypeFragment
}
districts {
...DistrictObjectTypeFragment
}
district {
...DistrictObjectTypeFragment
}
wards {
...WardObjectTypeFragment
}
zones {
...ZoneObjectTypeFragment
}
zone {
...ZoneObjectTypeFragment
}
zonesByCoordinates {
...ZoneObjectTypeFragment
}
ward {
...WardObjectTypeFragment
}
hierarchyPath {
...HierarchyPathFragment
}
tree {
...TerritoryTreeNodeFragment
}
countriesCursor {
...CursorPaginatedCountriesFragment
}
regionsCursor {
...CursorPaginatedRegionsFragment
}
districtsCursor {
...CursorPaginatedDistrictsFragment
}
wardsCursor {
...CursorPaginatedWardsFragment
}
updateRegion {
...RegionObjectTypeFragment
}
updateZone {
...ZoneObjectTypeFragment
}
createZone {
...ZoneObjectTypeFragment
}
toggleRegionInZone {
...RegionObjectTypeFragment
}
}
territory {
list {
...TerritoryObjectTypeFragment
}
get {
...TerritoryObjectTypeFragment
}
byRegion {
...TerritoryObjectTypeFragment
}
byLevel {
...TerritoryObjectTypeFragment
}
create {
...TerritoryObjectTypeFragment
}
update {
...TerritoryObjectTypeFragment
}
deactivate {
...TerritoryObjectTypeFragment
}
addWards {
...TerritoryObjectTypeFragment
}
removeWards {
...TerritoryObjectTypeFragment
}
addZones {
...TerritoryObjectTypeFragment
}
removeZones {
...TerritoryObjectTypeFragment
}
}
territoryAssignment {
entityTerritories {
...TerritoryAssignmentObjectTypeFragment
}
territoryEntities {
...TerritoryAssignmentObjectTypeFragment
}
history {
...TerritoryAssignmentObjectTypeFragment
}
list {
...TerritoryAssignmentObjectTypeFragment
}
assign {
...TerritoryAssignmentObjectTypeFragment
}
unassign {
...TerritoryAssignmentObjectTypeFragment
}
transfer {
...TerritoryTransferResultTypeFragment
}
}
territoryCoverage {
forTerritory {
...TerritoryCoverageObjectTypeFragment
}
flagged {
...TerritoryCoverageObjectTypeFragment
}
gaps {
...TerritoryCoverageObjectTypeFragment
}
overlaps {
...TerritoryCoverageObjectTypeFragment
}
resolve {
...TerritoryCoverageObjectTypeFragment
}
}
}
}
Response
{
"data": {
"territory_module_mutations": {
"geography": GeographyNamespace,
"territory": TerritoryNamespace,
"territoryAssignment": TerritoryAssignmentNamespace,
"territoryCoverage": TerritoryCoverageNamespace
}
}
}
triggerMpesaAnalysisSync
Description
Force a full ANALYSIS_SYNC sweep — re-processes all pending M-Pesa analyses via the financial-statements queue.
Response
Returns a Boolean!
Example
Query
mutation triggerMpesaAnalysisSync {
triggerMpesaAnalysisSync
}
Response
{"data": {"triggerMpesaAnalysisSync": true}}
updateApplication
Description
Update an existing application
Response
Returns an ApplicationEntityGraphQL!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateApplicationEntityInput!
|
|
options - PatchUpdateOptionsInput
|
Example
Query
mutation updateApplication(
$id: ID!,
$input: UpdateApplicationEntityInput!,
$options: PatchUpdateOptionsInput
) {
updateApplication(
id: $id,
input: $input,
options: $options
) {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
mpesa_statement
bank_statement
back_id
front_id
selfie
}
customer {
personal_info {
...ApplicationPersonalInfoGraphQLFragment
}
identification {
...ApplicationIdentificationGraphQLFragment
}
location {
...ApplicationLocationGraphQLFragment
}
employment {
...ApplicationEmploymentGraphQLFragment
}
credit_history {
...ApplicationCreditHistoryGraphQLFragment
}
product {
...ApplicationProductGraphQLFragment
}
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
previous_next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
credit {
credit
credit_process
pending_kyc_tags
system_crb_score
user_crb_score
final_risk_score
status
prospect_status
resubmission_pending_review
customer_bucket
customer_tag
prospect_model
check_by_risk_model
fate_guide
risk_flag
combined_risk_flag
deposit_requirement
advice_customer
customer_credit_fate_reason
last_modified_credit_status
approved_at
product_id
product_name
product_inventory_id
price_plan_id
price_plan_code
price_plan_name
product_cash_price
resubmission_link
initial_weeks
risk_model
validity {
...ApplicationValidityGraphQLFragment
}
metadata
exemption_record {
...ApplicationExemptionRecordGraphQLFragment
}
}
risk {
risk_flag
previous_loans
high_deposit_overide
}
delivery {
delivery_id
rider_id
mpesa_code
delivery_code
rider_submitted_otp
otp_expiry_time
location {
...ApplicationLocationGraphQLFragment
}
front_id
back_id
delivery_status
notes
order_processing {
...SalesProcessingJobStatusGraphQLFragment
}
sale_creation {
...SalesProcessingJobStatusGraphQLFragment
}
}
legacy_references {
lead_id
prospect_id
application_id
}
metadata
timeline {
lead_created
lead_updated
prospect_created
prospect_updated
customer_created
ready_for_scoring
ready_for_calling
ready_for_decision
called_at
scored_at
decisioned_at
device_needed
liveness_created_date
ready_for_screening
screened_at
paused_financial_statement_at
prospect_submitted_at
resubmission_submitted_at
scoring_started_at
first_scored_at
calling_started_at
first_called_at
decision_started_at
first_decisioned_at
last_modified_credit_status_at
}
references {
lead_id
prospect_id
customer_id
crb_transaction_id
resubmission_id
fate_guide_id
final_fate_guide_id
order_id
}
validation_references {
customer_iprs
customer_kra
customer_mpesa
customer_duplicate
nok_iprs
nok_mpesa
nok_duplicate
risk
mpesa_statement
liveness
pre_screening
}
application_type
normal_high_deposit
activeValidationRecords {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
credit_call {
call_details_id
call_type
credit_call_link
}
call_disposition_id
submission_source
leads_screens {
customer
product
consent
termsAndConditions
kycDocuments
creditQuestions
}
prospects_screens {
liveness
nextOfKin
product
images
}
liveness_check {
method
link
}
consent {
sales_approval
terms_and_conditions
source_of_information
verified
verification_phone
referrer_name
created_at
otp
verified_at
}
staff {
scorer {
...ApplicationStaffMemberGraphQLFragment
}
caller {
...ApplicationStaffMemberGraphQLFragment
}
decisioner {
...ApplicationStaffMemberGraphQLFragment
}
sales_agent {
...ApplicationSalesAgentGraphQLFragment
}
submitting_agent {
...ApplicationSalesAgentGraphQLFragment
}
screener {
...ApplicationSalesAgentGraphQLFragment
}
seller {
...ApplicationSalesAgentGraphQLFragment
}
sfm {
...ApplicationSalesAgentGraphQLFragment
}
}
creditProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
customerProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
salesAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
submittingAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
sfmAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
active_resubmission {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
createdAt
updatedAt
callDisposition {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
validation_records {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
active_validation_records {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
creditCallDetails {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
activeCreditPricePlan {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
}
}
Variables
{
"id": "4",
"input": UpdateApplicationEntityInput,
"options": PatchUpdateOptionsInput
}
Response
{
"data": {
"updateApplication": {
"_id": "4",
"customer_id": "abc123",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["xyz789"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "xyz789",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [
ValidationRecordGraphQLEntity
],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
}
}
updateApplicationCallDetail
Description
Update an existing application call detail record
Response
Returns an ApplicationCallDetailsType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateApplicationCallDetailsInput!
|
Example
Query
mutation updateApplicationCallDetail(
$id: ID!,
$input: UpdateApplicationCallDetailsInput!
) {
updateApplicationCallDetail(
id: $id,
input: $input
) {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
call_status
notes
relation
consent
idNumber
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
}
Variables
{
"id": "4",
"input": UpdateApplicationCallDetailsInput
}
Response
{
"data": {
"updateApplicationCallDetail": {
"_id": 4,
"application_id": 4,
"status": "abc123",
"notes": "abc123",
"agent_name": "abc123",
"caller_id": "xyz789",
"delivery_location_type": "xyz789",
"priority": "xyz789",
"call_date": "2007-12-03T10:15:30Z",
"follow_up_required": false,
"customer_location": "abc123",
"employer_info": "xyz789",
"employment_details": "xyz789",
"delivery_location": "xyz789",
"product_choice": "abc123",
"confirmed_price_plan": "abc123",
"geo_address": "abc123",
"delivery_or_collection_location": "abc123",
"other_delivery_notes": "abc123",
"call_type": "NOK",
"call_outcome": "abc123",
"call_notes": "abc123",
"call_ended_at": "2007-12-03T10:15:30Z",
"call_started_at": "2007-12-03T10:15:30Z",
"call_duration_seconds": 987.65,
"nok": CallDetailsNokType,
"customer_general_location": "abc123",
"preferred_delivery_day": "2007-12-03T10:15:30Z",
"preferred_delivery_slot": "abc123",
"work_location": "xyz789",
"work_location_link": "xyz789",
"screening_consent": "xyz789",
"accept_loan_terms": "xyz789",
"extras": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
updateCallDisposition
Description
Update an existing call disposition
Response
Returns a CallDispositionType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateCallDispositionInput!
|
Example
Query
mutation updateCallDisposition(
$id: ID!,
$input: UpdateCallDispositionInput!
) {
updateCallDisposition(
id: $id,
input: $input
) {
_id
application_id
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
}
Variables
{"id": 4, "input": UpdateCallDispositionInput}
Response
{
"data": {
"updateCallDisposition": {
"_id": "4",
"application_id": 4,
"application": ApplicationEntityGraphQL,
"disposition": "abc123",
"notes": "xyz789",
"priority": "abc123",
"next_call_date": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
updateCategory
Response
Returns a CategoryObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateCategoryInput!
|
Example
Query
mutation updateCategory(
$id: ID!,
$input: UpdateCategoryInput!
) {
updateCategory(
id: $id,
input: $input
) {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
}
Variables
{
"id": "4",
"input": UpdateCategoryInput
}
Response
{
"data": {
"updateCategory": {
"category_id": "4",
"name": "abc123",
"slug": "xyz789",
"description": "abc123",
"icon_url": "abc123",
"image_url": "abc123",
"required_attributes": {},
"sku_attributes": {},
"parent_category_id": "abc123",
"level": 123.45,
"path": "abc123",
"sort_order": 987.65,
"is_active": false,
"meta_title": "xyz789",
"meta_description": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateCommission
Response
Returns a CommissionObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
|
input - UpdateCommissionInput!
|
Example
Query
mutation updateCommission(
$id: String!,
$input: UpdateCommissionInput!
) {
updateCommission(
id: $id,
input: $input
) {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
overrides {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
...AgentProfileObjectTypeFragment
}
commission_rule {
...CommissionObjectTypeFragment
}
}
}
}
Variables
{
"id": "abc123",
"input": UpdateCommissionInput
}
Response
{
"data": {
"updateCommission": {
"id": 4,
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"attribute_type": "ALL",
"commission_value_type": "FLAT",
"sku_id": "xyz789",
"min_price": 987.65,
"max_price": 123.45,
"product_commission": 987.65,
"loan_commission": 987.65,
"cash_commission": 123.45,
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sku": SkuObjectType,
"overrides": [CommissionOverrideObjectType]
}
}
}
updateCommissionOverride
Response
Returns a CommissionOverrideObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
|
input - UpdateCommissionOverrideInput!
|
Example
Query
mutation updateCommissionOverride(
$id: String!,
$input: UpdateCommissionOverrideInput!
) {
updateCommissionOverride(
id: $id,
input: $input
) {
id
agent_profile_id
commission_rule_id
product_commission
loan_commission
cash_commission
commission_value_type
is_active
created_at
updated_at
agent_profile {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
commission_rule {
id
channel_type
commission_type
attribute_type
commission_value_type
sku_id
min_price
max_price
product_commission
loan_commission
cash_commission
start_date
end_date
is_active
created_at
updated_at
sku {
...SkuObjectTypeFragment
}
overrides {
...CommissionOverrideObjectTypeFragment
}
}
}
}
Variables
{
"id": "xyz789",
"input": UpdateCommissionOverrideInput
}
Response
{
"data": {
"updateCommissionOverride": {
"id": 4,
"agent_profile_id": "xyz789",
"commission_rule_id": "xyz789",
"product_commission": 123.45,
"loan_commission": 987.65,
"cash_commission": 987.65,
"commission_value_type": "FLAT",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"agent_profile": AgentProfileObjectType,
"commission_rule": CommissionObjectType
}
}
}
updateCondition
Response
Returns a ConditionObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateConditionInput!
|
Example
Query
mutation updateCondition(
$id: ID!,
$input: UpdateConditionInput!
) {
updateCondition(
id: $id,
input: $input
) {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
Variables
{"id": 4, "input": UpdateConditionInput}
Response
{
"data": {
"updateCondition": {
"condition_id": "4",
"grade": "xyz789",
"name": "abc123",
"sort_order": 123,
"color_hex": "xyz789",
"badge_icon": "xyz789",
"criteria": {},
"description": "xyz789",
"internal_notes": "abc123",
"verification_requirements": {},
"warranty_months": 987,
"price_multiplier": 987.65,
"financing_impact": {},
"seller_requirements": {},
"is_active": false,
"available_for_sellers": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateCostPrice
Response
Returns a SellerCatalogObjectType!
Example
Query
mutation updateCostPrice(
$catalogId: ID!,
$newCostPrice: Float!
) {
updateCostPrice(
catalogId: $catalogId,
newCostPrice: $newCostPrice
) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"catalogId": 4, "newCostPrice": 987.65}
Response
{
"data": {
"updateCostPrice": {
"seller_catalog_id": 4,
"seller_id": "abc123",
"sku_id": "xyz789",
"cost_price": 987.65,
"retail_price": 987.65,
"currency": "abc123",
"stock_on_hand": 987,
"reserved_stock": 987,
"is_active": true,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 123,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
}
}
updateCreditBureauRecordStatus
Description
Mark a credit bureau record as ACTIVE or STALE
Response
Returns a CreditBureauTransactionDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateVerificationRecordStatusInput!
|
Example
Query
mutation updateCreditBureauRecordStatus(
$id: ID!,
$input: UpdateVerificationRecordStatusInput!
) {
updateCreditBureauRecordStatus(
id: $id,
input: $input
) {
id
_id
provider
customer_id
customer_dob
customer_age
customer_name
recent_loans_crb
open_loans_count
past_default_crb
open_loan_record
written_off_loans
settled_default_loans
closed_default_loans
open_default_loans
is_report_empty
has_no_defaults_and_low_principals
paid_off_loans_in_time_12_months
paid_off_loans_in_time_all
principals_below_5000
phone_numbers
system_defined_score
user_defined_score
score
pdf_id
pdf_url
rawData
metadata
manual_override
record_status
crb_analysis {
scoreExplanation {
...CrbScoreExplanationTypeFragment
}
creditCheckFields {
...CrbCreditCheckFieldsTypeFragment
}
}
createdAt
updatedAt
}
}
Variables
{
"id": "4",
"input": UpdateVerificationRecordStatusInput
}
Response
{
"data": {
"updateCreditBureauRecordStatus": {
"id": "4",
"_id": 4,
"provider": "TRANSUNION",
"customer_id": "xyz789",
"customer_dob": "2007-12-03T10:15:30Z",
"customer_age": 123.45,
"customer_name": "abc123",
"recent_loans_crb": 123.45,
"open_loans_count": 987.65,
"past_default_crb": 987.65,
"open_loan_record": 987.65,
"written_off_loans": 123.45,
"settled_default_loans": 123.45,
"closed_default_loans": 123.45,
"open_default_loans": 987.65,
"is_report_empty": true,
"has_no_defaults_and_low_principals": false,
"paid_off_loans_in_time_12_months": 987.65,
"paid_off_loans_in_time_all": 987.65,
"principals_below_5000": 123.45,
"phone_numbers": ["abc123"],
"system_defined_score": "xyz789",
"user_defined_score": "xyz789",
"score": "abc123",
"pdf_id": "abc123",
"pdf_url": "xyz789",
"rawData": {},
"metadata": {},
"manual_override": true,
"record_status": "ACTIVE",
"crb_analysis": CrbAnalysisType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
updateCustomer
Response
Returns a RawCustomersDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateRawCustomersInput!
|
Example
Query
mutation updateCustomer(
$id: ID!,
$input: UpdateRawCustomersInput!
) {
updateCustomer(
id: $id,
input: $input
) {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
middle_name
gender
date_of_birth
secondary_phone
marital_status
application_id
customer_source
customer_source_id
}
organization_details {
trading_name
organization_type
registration_date
tax_id
industry_sector
number_of_employees
application_id
customer_source
customer_source_id
}
contact_person {
name
title
phone
email
}
kyc_documents {
selfie_url
id_front_url
id_back_url
certificate_of_incorporation_url
tax_certificate_url
business_permit_url
associated_phone_numbers
}
next_of_kin {
first_name
other_name
relationship
id_type
id_number
phone_primary
phone_secondary
primary_on_whatsapp
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
latestApplication {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
}
}
Variables
{
"id": "4",
"input": UpdateRawCustomersInput
}
Response
{
"data": {
"updateCustomer": {
"customer_id": "4",
"customer_created_at": "2007-12-03T10:15:30Z",
"customer_type": "INDIVIDUAL",
"customer_phone_number": "abc123",
"official_id_number": "abc123",
"country": "abc123",
"county": "xyz789",
"sub_county": "abc123",
"ward": "xyz789",
"town": "abc123",
"landmark": "abc123",
"customer_email_address": "xyz789",
"customer_status": "ACTIVE",
"display_name": "abc123",
"customer_first_name": "xyz789",
"customer_surname_name": "abc123",
"organization_name": "abc123",
"organization_registration_number": "xyz789",
"individual_details": IndividualDetailsDto,
"organization_details": OrganizationDetailsDto,
"contact_person": ContactPersonDto,
"kyc_documents": KycDocumentsDto,
"next_of_kin": NextOfKinDto,
"total_loans_taken": 123.45,
"active_loans_count": 987.65,
"completed_loans_count": 123.45,
"has_defaulted": true,
"current_credit_score": "abc123",
"metadata": {},
"customer_updated_at": "2007-12-03T10:15:30Z",
"keycloak_id": "xyz789",
"referral_code": "xyz789",
"applications": [ApplicationEntityGraphQL],
"latestApplication": ApplicationEntityGraphQL
}
}
}
updateCustomerWallet
Response
Returns a RawCustomerWalletsDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateRawCustomerWalletsInput!
|
Example
Query
mutation updateCustomerWallet(
$id: ID!,
$input: UpdateRawCustomerWalletsInput!
) {
updateCustomerWallet(
id: $id,
input: $input
) {
customer_wallet_id
customer_id
customer_wallet_available_balance
customer_wallet_total_payments
customer_wallet_total_adjustments
customer_wallet_total_days_given
customer_wallet_total_points
customer_wallet_total_allocated
customer_wallet_lifetime_credits
customer_wallet_lifetime_debits
customer_wallet_currency
customer_wallet_created_at
customer_wallet_updated_at
}
}
Variables
{"id": 4, "input": UpdateRawCustomerWalletsInput}
Response
{
"data": {
"updateCustomerWallet": {
"customer_wallet_id": "4",
"customer_id": "4",
"customer_wallet_available_balance": 987.65,
"customer_wallet_total_payments": 987.65,
"customer_wallet_total_adjustments": 987.65,
"customer_wallet_total_days_given": 123.45,
"customer_wallet_total_points": 987.65,
"customer_wallet_total_allocated": 123.45,
"customer_wallet_lifetime_credits": 987.65,
"customer_wallet_lifetime_debits": 123.45,
"customer_wallet_currency": "KES",
"customer_wallet_created_at": "2007-12-03T10:15:30Z",
"customer_wallet_updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateDelivery
Response
Returns a DeliveryObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateDeliveryInput!
|
Example
Query
mutation updateDelivery(
$id: ID!,
$input: UpdateDeliveryInput!
) {
updateDelivery(
id: $id,
input: $input
) {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
street
city
state
postal_code
country
geo {
...GeoLocationFragment
}
}
tracking_number
provider_info {
provider_name
external_id
tracking_url
}
proof_of_delivery {
images
signature
otp
submitted_otp
otp_expiry_time
match
payment_reference
failed_delivery_reason
}
delivery_notes
destination_location {
lat
lng
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
calls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
latestAnsweredCall {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
created_at
updated_at
deliveryItems {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
}
}
Variables
{"id": 4, "input": UpdateDeliveryInput}
Response
{
"data": {
"updateDelivery": {
"delivery_id": 4,
"order_id": 4,
"seller_id": 4,
"assigned_rider_id": 4,
"delivery_status": "PENDING",
"delivery_address": DeliveryAddress,
"tracking_number": "abc123",
"provider_info": ProviderInfo,
"proof_of_delivery": ProofOfDelivery,
"delivery_notes": "abc123",
"destination_location": GeoLocation,
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"metadata": {},
"assigned_rider": UserObjectType,
"seller": SellerObjectType,
"order": OrderObjectType,
"items": [DeliveryItemObjectType],
"calls": [DeliveryCallObjectType],
"latestAnsweredCall": DeliveryCallObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"deliveryItems": [DeliveryItemObjectType]
}
}
}
updateDeliveryCall
Response
Returns a DeliveryCallObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateDeliveryCallInput!
|
Example
Query
mutation updateDeliveryCall(
$id: ID!,
$input: UpdateDeliveryCallInput!
) {
updateDeliveryCall(
id: $id,
input: $input
) {
call_id
order_id
called_by
caller {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
confirmed_delivery_location {
street
city
state
postal_code
country
geo {
...DeliveryCallGeoFragment
}
}
spec_preference {
colour
sim_card_preference
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
}
}
Variables
{"id": 4, "input": UpdateDeliveryCallInput}
Response
{
"data": {
"updateDeliveryCall": {
"call_id": 4,
"order_id": 4,
"called_by": "4",
"caller": UserObjectType,
"confirmed_delivery_location": ConfirmedDeliveryLocationObjectType,
"spec_preference": SpecPreferenceObjectType,
"confirmed_delivery_date": "abc123",
"confirmed_delivery_slot": "MORNING",
"call_time": "2007-12-03T10:15:30Z",
"outcome": "CALL_BACK",
"confirmed_delivery_type": "DELIVERY",
"confirmed_delivery_type_name": "MO",
"notes": "xyz789",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"order": OrderObjectType
}
}
}
updateDeliveryCalls
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - DeliveryCallFilterInput!
|
|
input - UpdateDeliveryCallInput!
|
Example
Query
mutation updateDeliveryCalls(
$filters: DeliveryCallFilterInput!,
$input: UpdateDeliveryCallInput!
) {
updateDeliveryCalls(
filters: $filters,
input: $input
)
}
Variables
{
"filters": DeliveryCallFilterInput,
"input": UpdateDeliveryCallInput
}
Response
{"data": {"updateDeliveryCalls": 987.65}}
updateDeliveryItem
Response
Returns a DeliveryItemObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateDeliveryItemInput!
|
Example
Query
mutation updateDeliveryItem(
$id: ID!,
$input: UpdateDeliveryItemInput!
) {
updateDeliveryItem(
id: $id,
input: $input
) {
id
delivery_id
order_item_id
quantity_shipped
delivery {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
order_item {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
}
}
Variables
{"id": 4, "input": UpdateDeliveryItemInput}
Response
{
"data": {
"updateDeliveryItem": {
"id": 4,
"delivery_id": 4,
"order_item_id": "4",
"quantity_shipped": 987.65,
"delivery": DeliveryObjectType,
"order_item": OrderItemObjectType
}
}
}
updateEstimatedCompletion
Response
Returns a RepairObjectType!
Example
Query
mutation updateEstimatedCompletion(
$orderId: ID!,
$estimatedCompletionAt: DateTime!
) {
updateEstimatedCompletion(
orderId: $orderId,
estimatedCompletionAt: $estimatedCompletionAt
) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{
"orderId": "4",
"estimatedCompletionAt": "2007-12-03T10:15:30Z"
}
Response
{
"data": {
"updateEstimatedCompletion": {
"repair_id": 4,
"repair_display_id": "xyz789",
"requires_technician": false,
"inventory_id": "xyz789",
"customer_id": "xyz789",
"original_sale_id": "xyz789",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 123.45,
"spares_cost": 987.65,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
}
}
updateFlashSale
Response
Returns a FlashSaleObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateFlashSaleInput!
|
Example
Query
mutation updateFlashSale(
$id: ID!,
$input: UpdateFlashSaleInput!
) {
updateFlashSale(
id: $id,
input: $input
) {
flash_sale_id
title
slug
description
start_date
end_date
status
max_quantity
sold_quantity
min_discount_percentage
is_featured
banner_image
icon_url
countdown_display
priority
participating_sellers
performance_metrics
meta_title
meta_description
created_at
updated_at
}
}
Variables
{"id": 4, "input": UpdateFlashSaleInput}
Response
{
"data": {
"updateFlashSale": {
"flash_sale_id": "4",
"title": "abc123",
"slug": "xyz789",
"description": "xyz789",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 123,
"sold_quantity": 987,
"min_discount_percentage": 987.65,
"is_featured": false,
"banner_image": "abc123",
"icon_url": "abc123",
"countdown_display": true,
"priority": 123,
"participating_sellers": ["xyz789"],
"performance_metrics": {},
"meta_title": "abc123",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateFlashSaleItem
Response
Returns a FlashSaleItemObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateFlashSaleItemInput!
|
Example
Query
mutation updateFlashSaleItem(
$id: ID!,
$input: UpdateFlashSaleItemInput!
) {
updateFlashSaleItem(
id: $id,
input: $input
) {
flash_sale_item_id
flash_sale_id
seller_catalog_id
product_id
sku_id
original_price
flash_sale_price
discount_percentage
stock_allocated
stock_sold
stock_remaining
max_per_customer
display_priority
is_featured
badge_text
created_at
}
}
Variables
{
"id": "4",
"input": UpdateFlashSaleItemInput
}
Response
{
"data": {
"updateFlashSaleItem": {
"flash_sale_item_id": "4",
"flash_sale_id": "abc123",
"seller_catalog_id": "abc123",
"product_id": "abc123",
"sku_id": "xyz789",
"original_price": 987.65,
"flash_sale_price": 987.65,
"discount_percentage": 123.45,
"stock_allocated": 123,
"stock_sold": 987,
"stock_remaining": 123,
"max_per_customer": 123,
"display_priority": 987,
"is_featured": true,
"badge_text": "xyz789",
"created_at": "2007-12-03T10:15:30Z"
}
}
}
updateFlashSaleItemDiscount
Response
Returns a FlashSaleItemObjectType!
Example
Query
mutation updateFlashSaleItemDiscount(
$id: ID!,
$discountPercentage: Float!
) {
updateFlashSaleItemDiscount(
id: $id,
discountPercentage: $discountPercentage
) {
flash_sale_item_id
flash_sale_id
seller_catalog_id
product_id
sku_id
original_price
flash_sale_price
discount_percentage
stock_allocated
stock_sold
stock_remaining
max_per_customer
display_priority
is_featured
badge_text
created_at
}
}
Variables
{"id": "4", "discountPercentage": 987.65}
Response
{
"data": {
"updateFlashSaleItemDiscount": {
"flash_sale_item_id": "4",
"flash_sale_id": "abc123",
"seller_catalog_id": "abc123",
"product_id": "xyz789",
"sku_id": "abc123",
"original_price": 123.45,
"flash_sale_price": 987.65,
"discount_percentage": 123.45,
"stock_allocated": 987,
"stock_sold": 987,
"stock_remaining": 123,
"max_per_customer": 123,
"display_priority": 987,
"is_featured": true,
"badge_text": "abc123",
"created_at": "2007-12-03T10:15:30Z"
}
}
}
updateGroup
Response
Returns a GroupObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
|
input - UpdateGroupInput!
|
Example
Query
mutation updateGroup(
$id: String!,
$input: UpdateGroupInput!
) {
updateGroup(
id: $id,
input: $input
) {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
childrenDetails {
_id
keycloak_id
name
realm
path
description
attributes
parent_id
children
level
member_keycloak_ids
member_count
synced_at
is_active
created_at
updated_at
parent {
...GroupObjectTypeFragment
}
childrenDetails {
...GroupObjectTypeFragment
}
}
}
}
Variables
{
"id": "xyz789",
"input": UpdateGroupInput
}
Response
{
"data": {
"updateGroup": {
"_id": "abc123",
"keycloak_id": "abc123",
"name": "abc123",
"realm": "abc123",
"path": "abc123",
"description": "xyz789",
"attributes": {},
"parent_id": "xyz789",
"children": ["abc123"],
"level": 123,
"member_keycloak_ids": ["abc123"],
"member_count": 123,
"synced_at": "2007-12-03T10:15:30Z",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"parent": GroupObjectType,
"childrenDetails": [GroupObjectType]
}
}
}
updateIdentityVerificationRecordStatus
Description
Mark an identity verification record as ACTIVE or STALE
Response
Returns an IdentityVerificationTransactionDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateVerificationRecordStatusInput!
|
Example
Query
mutation updateIdentityVerificationRecordStatus(
$id: ID!,
$input: UpdateVerificationRecordStatusInput!
) {
updateIdentityVerificationRecordStatus(
id: $id,
input: $input
) {
_id
provider
full_name
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_alive
identification_type
identification_number
id_serial
uploaded_photo
phone
email
country
record_status
createdAt
}
}
Variables
{
"id": "4",
"input": UpdateVerificationRecordStatusInput
}
Response
{
"data": {
"updateIdentityVerificationRecordStatus": {
"_id": 4,
"provider": "TRANSUNION",
"full_name": "xyz789",
"gender": "xyz789",
"date_of_birth": "abc123",
"place_of_birth": "abc123",
"kra_pin": "abc123",
"citizenship": "xyz789",
"is_alive": 123,
"identification_type": "abc123",
"identification_number": "xyz789",
"id_serial": "abc123",
"uploaded_photo": "abc123",
"phone": "xyz789",
"email": "xyz789",
"country": "abc123",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
updateIdentityVerificationTransaction
Description
Update an identity verification transaction record
Response
Returns an IdentityVerificationTransactionDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateIdentityVerificationTransactionInput!
|
|
justification - String!
|
Example
Query
mutation updateIdentityVerificationTransaction(
$id: ID!,
$input: UpdateIdentityVerificationTransactionInput!,
$justification: String!
) {
updateIdentityVerificationTransaction(
id: $id,
input: $input,
justification: $justification
) {
_id
provider
full_name
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_alive
identification_type
identification_number
id_serial
uploaded_photo
phone
email
country
record_status
createdAt
}
}
Variables
{
"id": "4",
"input": UpdateIdentityVerificationTransactionInput,
"justification": "xyz789"
}
Response
{
"data": {
"updateIdentityVerificationTransaction": {
"_id": "4",
"provider": "TRANSUNION",
"full_name": "xyz789",
"gender": "abc123",
"date_of_birth": "xyz789",
"place_of_birth": "xyz789",
"kra_pin": "abc123",
"citizenship": "xyz789",
"is_alive": 123,
"identification_type": "xyz789",
"identification_number": "xyz789",
"id_serial": "xyz789",
"uploaded_photo": "abc123",
"phone": "xyz789",
"email": "xyz789",
"country": "abc123",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
updateInventory
Response
Returns an InventoryObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateInventoryInput!
|
Example
Query
mutation updateInventory(
$id: ID!,
$input: UpdateInventoryInput!
) {
updateInventory(
id: $id,
input: $input
) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{
"id": "4",
"input": UpdateInventoryInput
}
Response
{
"data": {
"updateInventory": {
"inventory_id": 4,
"product_id": "xyz789",
"sku_id": "xyz789",
"condition_id": "xyz789",
"seller_catalog_id": "xyz789",
"seller_id": "xyz789",
"serial_number": "abc123",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": true,
"qc_report": QCReportType,
"qc_report_link": "xyz789",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 123.45,
"contract_id": "xyz789",
"mdm_status": {},
"batch_number": "xyz789",
"location_id": "abc123",
"inspection_report": "abc123",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "xyz789",
"supplier_code": "xyz789",
"supplier_order_reference": "xyz789",
"customer_id": "xyz789",
"sale_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
}
}
updateInventoryAllocation
Response
Returns an InventoryAllocationObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateInventoryAllocationInput!
|
Example
Query
mutation updateInventoryAllocation(
$id: ID!,
$input: UpdateInventoryAllocationInput!
) {
updateInventoryAllocation(
id: $id,
input: $input
) {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
created_at
updated_at
}
}
Variables
{"id": 4, "input": UpdateInventoryAllocationInput}
Response
{
"data": {
"updateInventoryAllocation": {
"inventory_allocation_id": 4,
"order_item_id": "4",
"inventory_id": "4",
"quantity_allocated": 123.45,
"allocation_status": "RESERVED",
"allocation_date": "2007-12-03T10:15:30Z",
"expiry_date": "2007-12-03T10:15:30Z",
"metadata": {},
"order_item": OrderItemObjectType,
"inventory": InventoryObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateInventoryEnrollmentStatus
Response
Returns an InventoryObjectType!
Arguments
| Name | Description |
|---|---|
inventoryId - ID!
|
|
newStatus - MdmEnrollmentStatusEnum!
|
Example
Query
mutation updateInventoryEnrollmentStatus(
$inventoryId: ID!,
$newStatus: MdmEnrollmentStatusEnum!
) {
updateInventoryEnrollmentStatus(
inventoryId: $inventoryId,
newStatus: $newStatus
) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{"inventoryId": 4, "newStatus": "PENDING"}
Response
{
"data": {
"updateInventoryEnrollmentStatus": {
"inventory_id": 4,
"product_id": "abc123",
"sku_id": "xyz789",
"condition_id": "xyz789",
"seller_catalog_id": "abc123",
"seller_id": "abc123",
"serial_number": "xyz789",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": true,
"qc_report": QCReportType,
"qc_report_link": "xyz789",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 123.45,
"contract_id": "xyz789",
"mdm_status": {},
"batch_number": "xyz789",
"location_id": "xyz789",
"inspection_report": "abc123",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "xyz789",
"supplier_code": "xyz789",
"supplier_order_reference": "abc123",
"customer_id": "xyz789",
"sale_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
}
}
updateInventoryLocation
Response
Returns an InventoryLocationObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateInventoryLocationInput!
|
Example
Query
mutation updateInventoryLocation(
$id: ID!,
$input: UpdateInventoryLocationInput!
) {
updateInventoryLocation(
id: $id,
input: $input
) {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
lat
lng
}
location_details {
country
county
sub_county
ward
town
landmark
gps_coordinates {
...InventoryCoordinatesObjectTypeFragment
}
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
Variables
{
"id": "4",
"input": UpdateInventoryLocationInput
}
Response
{
"data": {
"updateInventoryLocation": {
"inventory_location_id": 4,
"location_name": "abc123",
"location_type": "TRANSIT_INBOUND",
"location_code": "xyz789",
"address": "xyz789",
"city": "xyz789",
"region": "abc123",
"coordinates": InventoryCoordinatesObjectType,
"location_details": InventoryLocationDetailsObjectType,
"user_id": "abc123",
"manager_id": "xyz789",
"capacity": 123,
"current_stock": 123,
"is_active": false,
"operating_hours": {},
"seller_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateInventoryMdmEnrollment
Response
Returns an InventoryObjectType!
Arguments
| Name | Description |
|---|---|
inventoryId - ID!
|
|
newStatus - MdmEnrollmentStatusEnum!
|
Example
Query
mutation updateInventoryMdmEnrollment(
$inventoryId: ID!,
$newStatus: MdmEnrollmentStatusEnum!
) {
updateInventoryMdmEnrollment(
inventoryId: $inventoryId,
newStatus: $newStatus
) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{"inventoryId": "4", "newStatus": "PENDING"}
Response
{
"data": {
"updateInventoryMdmEnrollment": {
"inventory_id": 4,
"product_id": "xyz789",
"sku_id": "abc123",
"condition_id": "abc123",
"seller_catalog_id": "abc123",
"seller_id": "abc123",
"serial_number": "xyz789",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": true,
"qc_report": QCReportType,
"qc_report_link": "xyz789",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 987.65,
"contract_id": "abc123",
"mdm_status": {},
"batch_number": "xyz789",
"location_id": "abc123",
"inspection_report": "xyz789",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "abc123",
"supplier_code": "abc123",
"supplier_order_reference": "xyz789",
"customer_id": "xyz789",
"sale_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
}
}
updateInventoryPhysicalState
Response
Returns an InventoryObjectType!
Arguments
| Name | Description |
|---|---|
inventoryId - ID!
|
|
newState - PhysicalState!
|
Example
Query
mutation updateInventoryPhysicalState(
$inventoryId: ID!,
$newState: PhysicalState!
) {
updateInventoryPhysicalState(
inventoryId: $inventoryId,
newState: $newState
) {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
make
model
model_number
serial
imei
imei2
color
memory
carrier
unlock_status
os_version
grade
battery_health_percentage
battery_charge_percentage
battery_cycle_count
battery_current_max_capacity
battery_design_max_capacity
battery_health_grade
working_status
passed
failed
pending
glass_condition
cosmetics
notes
tester_name
user_id
test_plan_name
added_date
updated_date
device_lock
mdm_status
knox
apple_id
rooted
erased
eraser_type
eraser_start
eraser_end
eraser_total_time
erased_notes
swappa_qualified
swappa_rejection
back_market_qualified
back_market_rejection
amazon_renewed
amazon_renewed_rejection
ebay_refurbished
ebay_rejection
a4_certificate_link
erasure_certificate_link
device_history_report_link
a4_report_id
raw_csv_data
upload_date
upload_notes
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
location {
inventory_location_id
location_name
location_type
location_code
address
city
region
coordinates {
...InventoryCoordinatesObjectTypeFragment
}
location_details {
...InventoryLocationDetailsObjectTypeFragment
}
user_id
manager_id
capacity
current_stock
is_active
operating_hours
seller_id
created_at
updated_at
}
}
}
Variables
{"inventoryId": 4, "newState": "IN_STOCK"}
Response
{
"data": {
"updateInventoryPhysicalState": {
"inventory_id": 4,
"product_id": "xyz789",
"sku_id": "abc123",
"condition_id": "abc123",
"seller_catalog_id": "xyz789",
"seller_id": "xyz789",
"serial_number": "abc123",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": false,
"qc_report": QCReportType,
"qc_report_link": "abc123",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 987.65,
"contract_id": "abc123",
"mdm_status": {},
"batch_number": "abc123",
"location_id": "xyz789",
"inspection_report": "abc123",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "abc123",
"supplier_code": "xyz789",
"supplier_order_reference": "abc123",
"customer_id": "xyz789",
"sale_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
}
}
updateKycDocuments
Description
Update specific KYC documents for an existing customer. Only updates the documents provided.
Response
Returns a RawCustomersDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UploadKycDocumentsInput!
|
Example
Query
mutation updateKycDocuments(
$id: ID!,
$input: UploadKycDocumentsInput!
) {
updateKycDocuments(
id: $id,
input: $input
) {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
middle_name
gender
date_of_birth
secondary_phone
marital_status
application_id
customer_source
customer_source_id
}
organization_details {
trading_name
organization_type
registration_date
tax_id
industry_sector
number_of_employees
application_id
customer_source
customer_source_id
}
contact_person {
name
title
phone
email
}
kyc_documents {
selfie_url
id_front_url
id_back_url
certificate_of_incorporation_url
tax_certificate_url
business_permit_url
associated_phone_numbers
}
next_of_kin {
first_name
other_name
relationship
id_type
id_number
phone_primary
phone_secondary
primary_on_whatsapp
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
latestApplication {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
}
}
Variables
{"id": 4, "input": UploadKycDocumentsInput}
Response
{
"data": {
"updateKycDocuments": {
"customer_id": "4",
"customer_created_at": "2007-12-03T10:15:30Z",
"customer_type": "INDIVIDUAL",
"customer_phone_number": "abc123",
"official_id_number": "xyz789",
"country": "abc123",
"county": "xyz789",
"sub_county": "xyz789",
"ward": "abc123",
"town": "abc123",
"landmark": "abc123",
"customer_email_address": "xyz789",
"customer_status": "ACTIVE",
"display_name": "xyz789",
"customer_first_name": "xyz789",
"customer_surname_name": "abc123",
"organization_name": "abc123",
"organization_registration_number": "abc123",
"individual_details": IndividualDetailsDto,
"organization_details": OrganizationDetailsDto,
"contact_person": ContactPersonDto,
"kyc_documents": KycDocumentsDto,
"next_of_kin": NextOfKinDto,
"total_loans_taken": 123.45,
"active_loans_count": 987.65,
"completed_loans_count": 123.45,
"has_defaulted": true,
"current_credit_score": "xyz789",
"metadata": {},
"customer_updated_at": "2007-12-03T10:15:30Z",
"keycloak_id": "abc123",
"referral_code": "abc123",
"applications": [ApplicationEntityGraphQL],
"latestApplication": ApplicationEntityGraphQL
}
}
}
updateManyDelivery
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - DeliveryFilterInput!
|
|
input - UpdateDeliveryInput!
|
Example
Query
mutation updateManyDelivery(
$filters: DeliveryFilterInput!,
$input: UpdateDeliveryInput!
) {
updateManyDelivery(
filters: $filters,
input: $input
)
}
Variables
{
"filters": DeliveryFilterInput,
"input": UpdateDeliveryInput
}
Response
{"data": {"updateManyDelivery": 123.45}}
updateManyDeliveryItems
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - DeliveryItemFilterInput!
|
|
input - UpdateDeliveryItemInput!
|
Example
Query
mutation updateManyDeliveryItems(
$filters: DeliveryItemFilterInput!,
$input: UpdateDeliveryItemInput!
) {
updateManyDeliveryItems(
filters: $filters,
input: $input
)
}
Variables
{
"filters": DeliveryItemFilterInput,
"input": UpdateDeliveryItemInput
}
Response
{"data": {"updateManyDeliveryItems": 987.65}}
updateManyOrderItems
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - OrderFilterInput!
|
|
input - UpdateOrderItemInput!
|
Example
Query
mutation updateManyOrderItems(
$filters: OrderFilterInput!,
$input: UpdateOrderItemInput!
) {
updateManyOrderItems(
filters: $filters,
input: $input
)
}
Variables
{
"filters": OrderFilterInput,
"input": UpdateOrderItemInput
}
Response
{"data": {"updateManyOrderItems": 987.65}}
updateManyUsers
Response
Returns an Int!
Arguments
| Name | Description |
|---|---|
filters - UserFilterInput!
|
|
input - UpdateUserInput!
|
Example
Query
mutation updateManyUsers(
$filters: UserFilterInput!,
$input: UpdateUserInput!
) {
updateManyUsers(
filters: $filters,
input: $input
)
}
Variables
{
"filters": UserFilterInput,
"input": UpdateUserInput
}
Response
{"data": {"updateManyUsers": 123}}
updateOfferDiscount
Response
Returns a ProductOfferObjectType!
Example
Query
mutation updateOfferDiscount(
$offerId: ID!,
$discountPercentage: Float!
) {
updateOfferDiscount(
offerId: $offerId,
discountPercentage: $discountPercentage
) {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
}
Variables
{"offerId": 4, "discountPercentage": 123.45}
Response
{
"data": {
"updateOfferDiscount": {
"product_offer_id": "4",
"sku_id": 4,
"description": "abc123",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 123.45,
"minimum_purchase_amount": 987.65,
"maximum_discount_amount": 123.45,
"usage_limit": 123,
"usage_count": 987,
"usage_limit_per_customer": 987,
"promo_code": "xyz789",
"category_filters": ["abc123"],
"brand_filters": ["abc123"],
"applicable_channels": ["abc123"],
"active": false,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateOrder
Response
Returns an OrderObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateOrderInput!
|
Example
Query
mutation updateOrder(
$id: ID!,
$input: UpdateOrderInput!
) {
updateOrder(
id: $id,
input: $input
) {
order_id
customer_id
order_status
payment_status
shipping_address {
street
city
state
postal_code
country
geo {
...OrderGeoFragment
}
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
orderItems {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
deliveries {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
sales {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
deliveryCalls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
}
}
Variables
{
"id": "4",
"input": UpdateOrderInput
}
Response
{
"data": {
"updateOrder": {
"order_id": 4,
"customer_id": 4,
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "xyz789",
"sub_total": 123.45,
"total_discount": 123.45,
"delivery_fee": 123.45,
"service_fee": 123.45,
"tax_amount": 987.65,
"total_amount": 987.65,
"application_id": "abc123",
"sale_agent_id": "abc123",
"submitting_agent_id": "xyz789",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
}
}
updateOrderItem
Response
Returns an OrderItemObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateOrderItemInput!
|
Example
Query
mutation updateOrderItem(
$id: ID!,
$input: UpdateOrderItemInput!
) {
updateOrderItem(
id: $id,
input: $input
) {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
delivery_items {
id
delivery_id
order_item_id
quantity_shipped
delivery {
...DeliveryObjectTypeFragment
}
order_item {
...OrderItemObjectTypeFragment
}
}
inventory_allocations {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
...OrderItemObjectTypeFragment
}
inventory {
...InventoryObjectTypeFragment
}
created_at
updated_at
}
inventory_allocation {
inventory_allocation_id
order_item_id
inventory_id
quantity_allocated
allocation_status
allocation_date
expiry_date
metadata
order_item {
...OrderItemObjectTypeFragment
}
inventory {
...InventoryObjectTypeFragment
}
created_at
updated_at
}
}
}
Variables
{
"id": "4",
"input": UpdateOrderItemInput
}
Response
{
"data": {
"updateOrderItem": {
"order_item_id": 4,
"order_id": 4,
"seller_id": "4",
"item_type": "PRODUCT",
"catalog_id": "4",
"quantity": 123.45,
"unit_price": 987.65,
"discount_amount": 123.45,
"adjustments": {},
"subtotal": 123.45,
"purchase_type": "CASH",
"status": "abc123",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sellerCatalog": SellerCatalogObjectType,
"order": OrderObjectType,
"delivery_items": [DeliveryItemObjectType],
"inventory_allocations": [
InventoryAllocationObjectType
],
"inventory_allocation": InventoryAllocationObjectType
}
}
}
updateOrders
Response
Returns a Float!
Arguments
| Name | Description |
|---|---|
filters - SalesFilterInput!
|
|
input - UpdateSalesInput!
|
Example
Query
mutation updateOrders(
$filters: SalesFilterInput!,
$input: UpdateSalesInput!
) {
updateOrders(
filters: $filters,
input: $input
)
}
Variables
{
"filters": SalesFilterInput,
"input": UpdateSalesInput
}
Response
{"data": {"updateOrders": 987.65}}
updatePerformanceMetrics
Response
Returns a SellerObjectType!
Arguments
| Name | Description |
|---|---|
sellerId - ID!
|
|
metrics - PerformanceMetricsInput!
|
Example
Query
mutation updatePerformanceMetrics(
$sellerId: ID!,
$metrics: PerformanceMetricsInput!
) {
updatePerformanceMetrics(
sellerId: $sellerId,
metrics: $metrics
) {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
_id
id
channel_type
channel_category
partner_track
entity_type
is_owner
platform_owner
is_active
is_deleted
owner_user_id
staff_user_ids {
...UserObjectTypeFragment
}
reports_to_id {
...PartnerProfileObjectTypeFragment
}
hierarchy_depth
hierarchy_path
downline_partner_ids
whatsapp_number
secondary_number
location_details {
...LocationDetailsObjectTypeFragment
}
partner_status
assignment_status
training_status
current_cohort_id {
...CohortObjectTypeFragment
}
assigned_trainer_id
assigned_sfm_id
assigned_sfm {
...InternalStaffProfileObjectTypeFragment
}
assigned_promoter_id
assigned_promoter {
...InternalStaffProfileObjectTypeFragment
}
graduation_date
cohort_history {
...CohortEnrollmentObjectTypeFragment
}
assigned_shop_id
shop_based
outlets {
...RetailerOutletObjectTypeFragment
}
shop_metadata {
...StaticShopMetadataObjectTypeFragment
}
kyc_metadata {
...KYCMetadataObjectTypeFragment
}
activation_date
reactivation_date
deactivation_date
created_by {
...UserObjectTypeFragment
}
agent_profile_id {
...AgentProfileObjectTypeFragment
}
shop_manager_id {
...InternalStaffProfileObjectTypeFragment
}
seller_id {
...SellerObjectTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{"sellerId": 4, "metrics": PerformanceMetricsInput}
Response
{
"data": {
"updatePerformanceMetrics": {
"seller_id": 4,
"commission_type_id": "abc123",
"tier_id": "xyz789",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 987.65,
"total_reviews": 123,
"total_sales": 987,
"total_orders_365_days": 987,
"badges": ["abc123"],
"suspension_reason": "abc123",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "xyz789",
"platform_owner": true,
"partner_profile": PartnerProfileObjectType
}
}
}
updatePhoneVerificationRecordStatus
Description
Mark a phone verification record as ACTIVE or STALE
Response
Returns a PhoneVerificationTransactionDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateVerificationRecordStatusInput!
|
Example
Query
mutation updatePhoneVerificationRecordStatus(
$id: ID!,
$input: UpdateVerificationRecordStatusInput!
) {
updatePhoneVerificationRecordStatus(
id: $id,
input: $input
) {
_id
status
country_iso
provider
phone_number
target_id
customer_name
transaction_id
failure_reason
registered
failed_at
completed_at
manual
check
record_status
createdAt
}
}
Variables
{"id": 4, "input": UpdateVerificationRecordStatusInput}
Response
{
"data": {
"updatePhoneVerificationRecordStatus": {
"_id": "4",
"status": false,
"country_iso": "xyz789",
"provider": "MPESA",
"phone_number": "xyz789",
"target_id": "xyz789",
"customer_name": "abc123",
"transaction_id": "xyz789",
"failure_reason": "xyz789",
"registered": false,
"failed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"manual": true,
"check": "UNKNOWN",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
updatePhoneVerificationTransaction
Description
Update a phone verification transaction record
Response
Returns a PhoneVerificationTransactionDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdatePhoneVerificationTransactionInput!
|
|
justification - String!
|
Example
Query
mutation updatePhoneVerificationTransaction(
$id: ID!,
$input: UpdatePhoneVerificationTransactionInput!,
$justification: String!
) {
updatePhoneVerificationTransaction(
id: $id,
input: $input,
justification: $justification
) {
_id
status
country_iso
provider
phone_number
target_id
customer_name
transaction_id
failure_reason
registered
failed_at
completed_at
manual
check
record_status
createdAt
}
}
Variables
{
"id": "4",
"input": UpdatePhoneVerificationTransactionInput,
"justification": "xyz789"
}
Response
{
"data": {
"updatePhoneVerificationTransaction": {
"_id": "4",
"status": false,
"country_iso": "xyz789",
"provider": "MPESA",
"phone_number": "xyz789",
"target_id": "abc123",
"customer_name": "abc123",
"transaction_id": "abc123",
"failure_reason": "xyz789",
"registered": true,
"failed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"manual": false,
"check": "UNKNOWN",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
updatePricePlan
Response
Returns a PricePlanObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
|
input - UpdatePricePlanInput!
|
Example
Query
mutation updatePricePlan(
$id: String!,
$input: UpdatePricePlanInput!
) {
updatePricePlan(
id: $id,
input: $input
) {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
within_months
discount_percent
}
status
is_private
version
metadata
created_at
updated_at
tier {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
...PricePlanObjectTypeFragment
}
}
versions {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{
"id": "xyz789",
"input": UpdatePricePlanInput
}
Response
{
"data": {
"updatePricePlan": {
"id": "4",
"tier_id": "xyz789",
"parent_plan_id": "xyz789",
"code": "abc123",
"name": "xyz789",
"min_device_value": 123.45,
"max_device_value": 123.45,
"deposit_percent": 987.65,
"deposit_percent_high": 987.65,
"subsequent_loan_discount_percent": 123.45,
"loan_multiplier": 123.45,
"loan_multiplier_high": 123.45,
"mocare_percent": 987.65,
"duration_months": 987,
"duration_months_high": 987,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": true,
"version": 987,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
}
}
updateProduct
Response
Returns a ProductObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateProductInput!
|
Example
Query
mutation updateProduct(
$id: ID!,
$input: UpdateProductInput!
) {
updateProduct(
id: $id,
input: $input
) {
product_id
name
slug
brand
model
category_id
category {
category_id
name
slug
description
icon_url
image_url
required_attributes
sku_attributes
parent_category_id
level
path
sort_order
is_active
meta_title
meta_description
created_at
updated_at
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
Variables
{"id": 4, "input": UpdateProductInput}
Response
{
"data": {
"updateProduct": {
"product_id": "4",
"name": "xyz789",
"slug": "xyz789",
"brand": "xyz789",
"model": "abc123",
"category_id": "abc123",
"category": CategoryObjectType,
"description": "xyz789",
"long_description": "abc123",
"base_specifications": {},
"primary_image_url": "abc123",
"images": ["xyz789"],
"video_url": "abc123",
"meta_title": "abc123",
"meta_description": "abc123",
"keywords": ["abc123"],
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateProductOffer
Response
Returns a ProductOfferObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateProductOfferInput!
|
Example
Query
mutation updateProductOffer(
$id: ID!,
$input: UpdateProductOfferInput!
) {
updateProductOffer(
id: $id,
input: $input
) {
product_offer_id
sku_id
description
status
type
discount_value
minimum_purchase_amount
maximum_discount_amount
usage_limit
usage_count
usage_limit_per_customer
promo_code
category_filters
brand_filters
applicable_channels
active
starts_at
ends_at
seller_id
created_at
updated_at
}
}
Variables
{
"id": "4",
"input": UpdateProductOfferInput
}
Response
{
"data": {
"updateProductOffer": {
"product_offer_id": "4",
"sku_id": 4,
"description": "abc123",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 987.65,
"minimum_purchase_amount": 987.65,
"maximum_discount_amount": 987.65,
"usage_limit": 123,
"usage_count": 123,
"usage_limit_per_customer": 987,
"promo_code": "abc123",
"category_filters": ["abc123"],
"brand_filters": ["xyz789"],
"applicable_channels": ["abc123"],
"active": false,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateRating
Response
Returns a SellerObjectType!
Example
Query
mutation updateRating(
$sellerId: ID!,
$newRating: Float!,
$totalReviews: Float!
) {
updateRating(
sellerId: $sellerId,
newRating: $newRating,
totalReviews: $totalReviews
) {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
_id
id
channel_type
channel_category
partner_track
entity_type
is_owner
platform_owner
is_active
is_deleted
owner_user_id
staff_user_ids {
...UserObjectTypeFragment
}
reports_to_id {
...PartnerProfileObjectTypeFragment
}
hierarchy_depth
hierarchy_path
downline_partner_ids
whatsapp_number
secondary_number
location_details {
...LocationDetailsObjectTypeFragment
}
partner_status
assignment_status
training_status
current_cohort_id {
...CohortObjectTypeFragment
}
assigned_trainer_id
assigned_sfm_id
assigned_sfm {
...InternalStaffProfileObjectTypeFragment
}
assigned_promoter_id
assigned_promoter {
...InternalStaffProfileObjectTypeFragment
}
graduation_date
cohort_history {
...CohortEnrollmentObjectTypeFragment
}
assigned_shop_id
shop_based
outlets {
...RetailerOutletObjectTypeFragment
}
shop_metadata {
...StaticShopMetadataObjectTypeFragment
}
kyc_metadata {
...KYCMetadataObjectTypeFragment
}
activation_date
reactivation_date
deactivation_date
created_by {
...UserObjectTypeFragment
}
agent_profile_id {
...AgentProfileObjectTypeFragment
}
shop_manager_id {
...InternalStaffProfileObjectTypeFragment
}
seller_id {
...SellerObjectTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{
"sellerId": "4",
"newRating": 123.45,
"totalReviews": 123.45
}
Response
{
"data": {
"updateRating": {
"seller_id": "4",
"commission_type_id": "abc123",
"tier_id": "abc123",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 987.65,
"total_reviews": 987,
"total_sales": 987,
"total_orders_365_days": 987,
"badges": ["abc123"],
"suspension_reason": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "xyz789",
"platform_owner": true,
"partner_profile": PartnerProfileObjectType
}
}
}
updateReferralStatus
Response
Returns a CustomerReferralDto!
Arguments
| Name | Description |
|---|---|
referral_id - ID!
|
|
status - ReferralStatusEnum!
|
|
updated_by - String!
|
Example
Query
mutation updateReferralStatus(
$referral_id: ID!,
$status: ReferralStatusEnum!,
$updated_by: String!
) {
updateReferralStatus(
referral_id: $referral_id,
status: $status,
updated_by: $updated_by
) {
referral_id
referrer_customer_id
referee_customer_id
referee_customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
referral_code_used
referral_status
validation_due_date
validated_at
rewards_processed_at
referee_loan_contract_id
referee_opening_date
payment_adjustment_id
referrer_airtime_transaction_id
referee_airtime_transaction_id
created_by
created_at
updated_by
updated_at
}
}
Variables
{
"referral_id": "4",
"status": "INCOMPLETE",
"updated_by": "abc123"
}
Response
{
"data": {
"updateReferralStatus": {
"referral_id": "4",
"referrer_customer_id": 4,
"referee_customer_id": 4,
"referee_customer": RawCustomersDto,
"referral_code_used": "abc123",
"referral_status": "INCOMPLETE",
"validation_due_date": "2007-12-03T10:15:30Z",
"validated_at": "2007-12-03T10:15:30Z",
"rewards_processed_at": "2007-12-03T10:15:30Z",
"referee_loan_contract_id": "xyz789",
"referee_opening_date": "2007-12-03T10:15:30Z",
"payment_adjustment_id": "abc123",
"referrer_airtime_transaction_id": "abc123",
"referee_airtime_transaction_id": "abc123",
"created_by": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_by": "xyz789",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateRefund
Description
Update a refund record (status, method, notes)
Response
Returns a RefundGraphQL!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateRefundInput!
|
Example
Query
mutation updateRefund(
$id: ID!,
$input: UpdateRefundInput!
) {
updateRefund(
id: $id,
input: $input
) {
refund_id
customer_id
sale_id
returns_request_id
order_id
loan_contract_id
source_payment_id
adjustment_id
refund_workflow_type
refund_amount
status
refund_method
transaction_reference
submitted_by
submitted_by_name
actor_id
approved_by
approved_by_name
customer_name
customer_phone
customer_official_id
approved_at
processed_at
completed_at
notes
rejection_reason
returns_request_type
created_at
updated_at
}
}
Variables
{"id": 4, "input": UpdateRefundInput}
Response
{
"data": {
"updateRefund": {
"refund_id": "4",
"customer_id": "abc123",
"sale_id": "abc123",
"returns_request_id": "abc123",
"order_id": "xyz789",
"loan_contract_id": "abc123",
"source_payment_id": "xyz789",
"adjustment_id": "abc123",
"refund_workflow_type": "RETURN",
"refund_amount": 123.45,
"status": "PENDING",
"refund_method": "MPESA",
"transaction_reference": "xyz789",
"submitted_by": "abc123",
"submitted_by_name": "xyz789",
"actor_id": "xyz789",
"approved_by": "abc123",
"approved_by_name": "abc123",
"customer_name": "abc123",
"customer_phone": "abc123",
"customer_official_id": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"processed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"notes": "abc123",
"rejection_reason": "xyz789",
"returns_request_type": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateRepair
Response
Returns a RepairObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateRepairInput!
|
Example
Query
mutation updateRepair(
$id: ID!,
$input: UpdateRepairInput!
) {
updateRepair(
id: $id,
input: $input
) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{
"id": "4",
"input": UpdateRepairInput
}
Response
{
"data": {
"updateRepair": {
"repair_id": "4",
"repair_display_id": "abc123",
"requires_technician": false,
"inventory_id": "xyz789",
"customer_id": "abc123",
"original_sale_id": "xyz789",
"provider_seller_id": "abc123",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "xyz789",
"billing_type": "WARRANTY",
"quoted_price": 123.45,
"spares_cost": 987.65,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
}
}
updateRepairPriority
Response
Returns a RepairObjectType!
Arguments
| Name | Description |
|---|---|
orderId - ID!
|
|
priority - RepairPriorityEnum!
|
Example
Query
mutation updateRepairPriority(
$orderId: ID!,
$priority: RepairPriorityEnum!
) {
updateRepairPriority(
orderId: $orderId,
priority: $priority
) {
repair_id
repair_display_id
requires_technician
inventory_id
customer_id
original_sale_id
provider_seller_id
location_status
status
priority
is_left_at_shop
intake_details
outtake_details
security
issue_tag
customer_complaint
hq_diagnostic_notes
billing_type
quoted_price
spares_cost
estimated_completion_at
actual_completion_at
created_at
updated_at
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
}
}
Variables
{"orderId": "4", "priority": "LOW"}
Response
{
"data": {
"updateRepairPriority": {
"repair_id": "4",
"repair_display_id": "xyz789",
"requires_technician": true,
"inventory_id": "xyz789",
"customer_id": "xyz789",
"original_sale_id": "xyz789",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "xyz789",
"billing_type": "WARRANTY",
"quoted_price": 123.45,
"spares_cost": 987.65,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
}
}
updateReservedStock
Response
Returns a SellerCatalogObjectType!
Example
Query
mutation updateReservedStock(
$catalogId: ID!,
$newReservedStock: Float!
) {
updateReservedStock(
catalogId: $catalogId,
newReservedStock: $newReservedStock
) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{
"catalogId": "4",
"newReservedStock": 987.65
}
Response
{
"data": {
"updateReservedStock": {
"seller_catalog_id": 4,
"seller_id": "abc123",
"sku_id": "xyz789",
"cost_price": 987.65,
"retail_price": 123.45,
"currency": "abc123",
"stock_on_hand": 987,
"reserved_stock": 123,
"is_active": false,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 123,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
}
}
updateRetailPrice
Response
Returns a SellerCatalogObjectType!
Example
Query
mutation updateRetailPrice(
$catalogId: ID!,
$newPrice: Float!
) {
updateRetailPrice(
catalogId: $catalogId,
newPrice: $newPrice
) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"catalogId": "4", "newPrice": 123.45}
Response
{
"data": {
"updateRetailPrice": {
"seller_catalog_id": "4",
"seller_id": "xyz789",
"sku_id": "abc123",
"cost_price": 987.65,
"retail_price": 123.45,
"currency": "xyz789",
"stock_on_hand": 123,
"reserved_stock": 987,
"is_active": true,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 987,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
}
}
updateReturnsRequest
Description
Update non-status fields on a returns request. Status changes must use performReturnsAction instead.
Response
Returns a ReturnsGraphQL!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateReturnsInput!
|
Example
Query
mutation updateReturnsRequest(
$id: ID!,
$input: UpdateReturnsInput!
) {
updateReturnsRequest(
id: $id,
input: $input
) {
_id
request_type
status
customer_id
sale_id
ticket_id
current_device_id
target_device_model
return_reason
customer_notes
cxc_notes
submitted_by
customer {
display_name
customer_phone_number
}
current_device {
serial_number
product_id
sku_id
}
submitted_by_user {
name
email
}
operations_user {
name
email
}
decisioner_user {
name
email
}
submitted_at
return_policy
current_device_balance
amount_paid_to_date
current_device_deposit
new_device_deposit
new_device_price
device_allocation_details {
new_device_assigned_at
new_device_assigned_by
new_device_id
new_device_serial_number
new_device_name
}
operations_details {
operations_user_id
status
operations_notes
repair_cost
device_condition
locking_system_condition
device_unlock_password
decided_at
}
decisioner_details {
decisioner_id
status
decisioner_notes
confirmed_price_plan
confirmed_price_plan_name
confirmed_target_device_model
confirmed_target_device_model_name
confirmed_cash_price
confirmed_topup_amount
confirmed_refund_amount
calculated_deposit_amount
calculated_weekly_instalment_amount
calculated_topup_amount
calculated_refund_amount
arrears_amount_at_escalation
required_arrears_payment_amount
new_loan_term_months
decided_at
}
consent_records {
stage
consent_type
verified_at
status
created_at
is_bypassed
bypass_reason
bypassed_by
}
refund_applicable
repossession_details {
repossession_date
repossession_method
repossession_notes
}
status_history {
from
to
action
actor
actor_name
actor_email
timestamp
}
notes_history {
_id
text
author_id
author_name
lane
source_action
source_field
created_at
}
price_plan
lane_owner
superseded_by_request_id
supersedes_request_id
workflow_switch_reason
workflow_switch {
from_type
to_type
switched_at
switched_by
reason
force_switch
source_status
child_request_id
}
reverse_progress
no_stock_at_request
old_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
new_product_snapshot {
inventory_id
imei
sku_id
sku_code
sku_name
stock_location
stock_type_1p_3p
captured_at
captured_by
}
createdAt
updatedAt
intake_return_type_label
fulfillment_mode
mpesa_reference
upgrade_policy_mode
customer_age_weeks_at_decision
new_credit_sale_id
new_credit_sale_activated_at
topup_confirmed_at
swap_repair_mpesa_clearance
inventory_sync
pending_manual_detach
pending_detach_inventory_id
manual_detach_detached_at
manual_detach_inventory_id
linked_application_id
}
}
Variables
{
"id": "4",
"input": UpdateReturnsInput
}
Response
{
"data": {
"updateReturnsRequest": {
"_id": 4,
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "xyz789",
"sale_id": "xyz789",
"ticket_id": "xyz789",
"current_device_id": "xyz789",
"target_device_model": "abc123",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "xyz789",
"cxc_notes": "abc123",
"submitted_by": "xyz789",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 123.45,
"amount_paid_to_date": 987.65,
"current_device_deposit": 123.45,
"new_device_deposit": 987.65,
"new_device_price": 123.45,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": true,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "xyz789",
"lane_owner": "xyz789",
"superseded_by_request_id": "abc123",
"supersedes_request_id": "abc123",
"workflow_switch_reason": "xyz789",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": false,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "xyz789",
"fulfillment_mode": "xyz789",
"mpesa_reference": "xyz789",
"upgrade_policy_mode": "xyz789",
"customer_age_weeks_at_decision": 987,
"new_credit_sale_id": "4",
"new_credit_sale_activated_at": "xyz789",
"topup_confirmed_at": "xyz789",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": true,
"pending_detach_inventory_id": "4",
"manual_detach_detached_at": "abc123",
"manual_detach_inventory_id": 4,
"linked_application_id": "4"
}
}
}
updateRole
Response
Returns a RoleObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateRoleInput!
|
Example
Query
mutation updateRole(
$id: ID!,
$input: UpdateRoleInput!
) {
updateRole(
id: $id,
input: $input
) {
_id
id
name
level
permissions
description
canManage
realm
}
}
Variables
{
"id": "4",
"input": UpdateRoleInput
}
Response
{
"data": {
"updateRole": {
"_id": "abc123",
"id": "xyz789",
"name": "xyz789",
"level": 123,
"permissions": ["abc123"],
"description": "abc123",
"canManage": ["abc123"],
"realm": "abc123"
}
}
}
updateSale
Response
Returns a SalesObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateSalesInput!
|
Example
Query
mutation updateSale(
$id: ID!,
$input: UpdateSalesInput!
) {
updateSale(
id: $id,
input: $input
) {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
inventory_id
inventory {
inventory_id
product_id
sku_id
condition_id
seller_catalog_id
seller_id
serial_number
identifiers
physical_state
mdm_enrollment
enrollment_status
stock_status_type
stock_status_name
stock_origin
stock_type
b2b
qc_report {
...QCReportTypeFragment
}
qc_report_link
qc_status
qc_status_type
unit_cost
contract_id
mdm_status
batch_number
location_id
inspection_report
warranty
acquisition_date
first_sale_date
supplier_name
supplier_code
supplier_order_reference
customer_id
sale_id
created_at
updated_at
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
location {
...InventoryLocationObjectTypeFragment
}
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
order {
order_id
customer_id
order_status
payment_status
shipping_address {
...ShippingAddressFragment
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
...RawCustomersDtoFragment
}
application {
...ApplicationEntityGraphQLFragment
}
orderItems {
...OrderItemObjectTypeFragment
}
deliveries {
...DeliveryObjectTypeFragment
}
sales {
...SalesObjectTypeFragment
}
deliveryCalls {
...DeliveryCallObjectTypeFragment
}
}
loan_contract {
contract_id
loan_id
sale_id
customer_id
customer {
...RawCustomersDtoFragment
}
opening_date
duration
upfront_payment
deposit
repayment_type
gross_loan_amount
net_loan_amount
interest_rate
repayment_rate
interest_calculation_method
payment_allocation_method
disbursement_date
maturity_date
first_payment_due_date
grace_period_days
penalty_rate_per_day
is_restructured
original_contract_id
loan_product_code
loan_status_override
early_payoff_discounts {
...LoanEarlyPayoffDiscountTypeFragment
}
metadata
created_at
updated_at
installments {
...LoanInstallmentDtoFragment
}
overdueInstallments {
...LoanInstallmentDtoFragment
}
nextDueInstallment {
...LoanInstallmentDtoFragment
}
ledgerEntries {
...LoanLedgerDtoFragment
}
delinquencyTracking {
...LoanDelinquencyTrackingDtoFragment
}
paymentAllocations {
...PaymentAllocationDtoFragment
}
latest_ledger_id
grace_period_status
grace_period_category
grace_period_credit_expiry
grace_period_last_trigger_source
returned_date
is_lost
latest_ledger {
...LoanLedgerDtoFragment
}
contract {
...LoanContractDtoFragment
}
}
commission {
product_commission
loan_commission
cash_commission
channel_type
commission_type
commission_rule_id
commission_override_id
is_override
}
cash_price
reporting {
loan_id
business_model
is_3p_sale
partner_name
credit_check_done
cash_price
loan_price
loan_period
}
}
}
Variables
{
"id": "4",
"input": UpdateSalesInput
}
Response
{
"data": {
"updateSale": {
"sale_id": 4,
"sale_date": "2007-12-03T10:15:30Z",
"order_id": "4",
"customer_id": "4",
"sale_agent_id": "4",
"submitting_agent_id": "4",
"sfm_id": "4",
"price_plan_id": "4",
"pricePlan": PricePlanObjectType,
"inventory_id": 4,
"inventory": InventoryObjectType,
"payment_type": "REPAIR",
"payment_status": "UNPAID",
"normal_high_deposit": "NORMAL",
"final_sale_price": 123.45,
"upfront_payment": 123.45,
"gross_loan_amount": 123.45,
"marketplace_fee": 987.65,
"seller_payout": 123.45,
"invoice_number": "xyz789",
"status": "ACTIVE",
"return_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"order": OrderObjectType,
"loan_contract": LoanContractDto,
"commission": CommissionSnapshotType,
"cash_price": 123.45,
"reporting": SaleReportingType
}
}
}
updateSeller
Response
Returns a SellerObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateSellerInput!
|
Example
Query
mutation updateSeller(
$id: ID!,
$input: UpdateSellerInput!
) {
updateSeller(
id: $id,
input: $input
) {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
_id
id
channel_type
channel_category
partner_track
entity_type
is_owner
platform_owner
is_active
is_deleted
owner_user_id
staff_user_ids {
...UserObjectTypeFragment
}
reports_to_id {
...PartnerProfileObjectTypeFragment
}
hierarchy_depth
hierarchy_path
downline_partner_ids
whatsapp_number
secondary_number
location_details {
...LocationDetailsObjectTypeFragment
}
partner_status
assignment_status
training_status
current_cohort_id {
...CohortObjectTypeFragment
}
assigned_trainer_id
assigned_sfm_id
assigned_sfm {
...InternalStaffProfileObjectTypeFragment
}
assigned_promoter_id
assigned_promoter {
...InternalStaffProfileObjectTypeFragment
}
graduation_date
cohort_history {
...CohortEnrollmentObjectTypeFragment
}
assigned_shop_id
shop_based
outlets {
...RetailerOutletObjectTypeFragment
}
shop_metadata {
...StaticShopMetadataObjectTypeFragment
}
kyc_metadata {
...KYCMetadataObjectTypeFragment
}
activation_date
reactivation_date
deactivation_date
created_by {
...UserObjectTypeFragment
}
agent_profile_id {
...AgentProfileObjectTypeFragment
}
shop_manager_id {
...InternalStaffProfileObjectTypeFragment
}
seller_id {
...SellerObjectTypeFragment
}
createdAt
updatedAt
}
}
}
Variables
{
"id": "4",
"input": UpdateSellerInput
}
Response
{
"data": {
"updateSeller": {
"seller_id": "4",
"commission_type_id": "xyz789",
"tier_id": "xyz789",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 987.65,
"total_reviews": 987,
"total_sales": 987,
"total_orders_365_days": 987,
"badges": ["xyz789"],
"suspension_reason": "xyz789",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "abc123",
"platform_owner": false,
"partner_profile": PartnerProfileObjectType
}
}
}
updateSellerCatalog
Response
Returns a SellerCatalogObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateSellerCatalogInput!
|
Example
Query
mutation updateSellerCatalog(
$id: ID!,
$input: UpdateSellerCatalogInput!
) {
updateSellerCatalog(
id: $id,
input: $input
) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{
"id": "4",
"input": UpdateSellerCatalogInput
}
Response
{
"data": {
"updateSellerCatalog": {
"seller_catalog_id": "4",
"seller_id": "xyz789",
"sku_id": "abc123",
"cost_price": 123.45,
"retail_price": 123.45,
"currency": "abc123",
"stock_on_hand": 987,
"reserved_stock": 987,
"is_active": true,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 987,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
}
}
updateSellerTier
Response
Returns a SellerTierObjectType!
Arguments
| Name | Description |
|---|---|
id - String!
|
|
input - UpdateSellerTierInput!
|
Example
Query
mutation updateSellerTier(
$id: String!,
$input: UpdateSellerTierInput!
) {
updateSellerTier(
id: $id,
input: $input
) {
id
name
description
priority
is_active
created_at
updated_at
price_plans {
id
tier_id
parent_plan_id
code
name
min_device_value
max_device_value
deposit_percent
deposit_percent_high
subsequent_loan_discount_percent
loan_multiplier
loan_multiplier_high
mocare_percent
duration_months
duration_months_high
payment_frequency
effective_from
effective_to
early_payoff_discounts {
...EarlyPayoffDiscountObjectTypeFragment
}
status
is_private
version
metadata
created_at
updated_at
tier {
...SellerTierObjectTypeFragment
}
versions {
...PricePlanObjectTypeFragment
}
}
}
}
Variables
{
"id": "xyz789",
"input": UpdateSellerTierInput
}
Response
{
"data": {
"updateSellerTier": {
"id": "4",
"name": "abc123",
"description": "xyz789",
"priority": 123,
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"price_plans": [PricePlanObjectType]
}
}
}
updateSku
Response
Returns a SkuObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateSkuInput!
|
Example
Query
mutation updateSku(
$id: ID!,
$input: UpdateSkuInput!
) {
updateSku(
id: $id,
input: $input
) {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
condition {
condition_id
grade
name
sort_order
color_hex
badge_icon
criteria
description
internal_notes
verification_requirements
warranty_months
price_multiplier
financing_impact
seller_requirements
is_active
available_for_sellers
created_at
updated_at
}
}
}
Variables
{"id": 4, "input": UpdateSkuInput}
Response
{
"data": {
"updateSku": {
"sku_id": "4",
"product_id": "abc123",
"condition_id": "xyz789",
"parent_sku_id": "abc123",
"level": 123,
"level_attribute_key": "abc123",
"level_attribute_value": "abc123",
"sku_code": "xyz789",
"name": "abc123",
"attributes": {},
"variant_specifications": {},
"msrp_price": 987.65,
"min_seller_price": 987.65,
"max_seller_price": 123.45,
"suggested_retail_price": 123.45,
"effective_price": 987.65,
"images": ["abc123"],
"weight_grams": 123,
"dimensions_mm": "abc123",
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
}
}
updateStockOnHand
Response
Returns a SellerCatalogObjectType!
Example
Query
mutation updateStockOnHand(
$catalogId: ID!,
$newStock: Float!
) {
updateStockOnHand(
catalogId: $catalogId,
newStock: $newStock
) {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
sku {
sku_id
product_id
condition_id
parent_sku_id
level
level_attribute_key
level_attribute_value
sku_code
name
attributes
variant_specifications
msrp_price
min_seller_price
max_seller_price
suggested_retail_price
effective_price
images
weight_grams
dimensions_mm
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
product {
...ProductObjectTypeFragment
}
condition {
...ConditionObjectTypeFragment
}
}
product {
product_id
name
slug
brand
model
category_id
category {
...CategoryObjectTypeFragment
}
description
long_description
base_specifications
primary_image_url
images
video_url
meta_title
meta_description
keywords
is_active
approval_status
submitted_by_seller_id
approved_by
approved_at
rejection_reason
created_at
updated_at
}
}
}
Variables
{"catalogId": 4, "newStock": 123.45}
Response
{
"data": {
"updateStockOnHand": {
"seller_catalog_id": "4",
"seller_id": "abc123",
"sku_id": "xyz789",
"cost_price": 987.65,
"retail_price": 123.45,
"currency": "abc123",
"stock_on_hand": 123,
"reserved_stock": 123,
"is_active": true,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 123,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
}
}
updateTaxVerificationRecordStatus
Description
Mark a tax verification record as ACTIVE or STALE
Response
Returns a TaxVerificationTransactionDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateVerificationRecordStatusInput!
|
Example
Query
mutation updateTaxVerificationRecordStatus(
$id: ID!,
$input: UpdateVerificationRecordStatusInput!
) {
updateTaxVerificationRecordStatus(
id: $id,
input: $input
) {
id
provider
full_name
identification_type
pin_number
expiration_date
issuance_date
phone
gender
date_of_birth
place_of_birth
kra_pin
citizenship
is_pin_active
email
country
record_status
createdAt
}
}
Variables
{"id": 4, "input": UpdateVerificationRecordStatusInput}
Response
{
"data": {
"updateTaxVerificationRecordStatus": {
"id": 4,
"provider": "BOT",
"full_name": "abc123",
"identification_type": "abc123",
"pin_number": "xyz789",
"expiration_date": "xyz789",
"issuance_date": "abc123",
"phone": "xyz789",
"gender": "abc123",
"date_of_birth": "xyz789",
"place_of_birth": "xyz789",
"kra_pin": "xyz789",
"citizenship": "xyz789",
"is_pin_active": 987,
"email": "xyz789",
"country": "abc123",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
}
}
updateUser
Response
Returns a UserObjectType!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateUserInput!
|
Example
Query
mutation updateUser(
$id: ID!,
$input: UpdateUserInput!
) {
updateUser(
id: $id,
input: $input
) {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
}
Variables
{
"id": "4",
"input": UpdateUserInput
}
Response
{
"data": {
"updateUser": {
"_id": "4",
"id": "xyz789",
"keycloak_id": "xyz789",
"username": "abc123",
"email": "xyz789",
"first_name": "abc123",
"surname": "abc123",
"last_name": "xyz789",
"phone_number": "abc123",
"role": "abc123",
"enabled": false,
"user_type": "SYSTEM_ADMIN",
"is_internal": true,
"first_login": "2007-12-03T10:15:30Z",
"last_login": "2007-12-03T10:15:30Z",
"availability_status": "AVAILABLE",
"synced_at": "2007-12-03T10:15:30Z",
"group_memberships": ["xyz789"],
"permissions": ["xyz789"],
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
}
}
updateWalletTransaction
Response
Returns a RawWalletTransactionsDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateRawWalletTransactionsInput!
|
Example
Query
mutation updateWalletTransaction(
$id: ID!,
$input: UpdateRawWalletTransactionsInput!
) {
updateWalletTransaction(
id: $id,
input: $input
) {
wallet_transaction_id
wallet_id
customer_id
sale_id
wallet_transaction_ref_id
wallet_transaction_type
wallet_transaction_sub_type
wallet_transaction_amount
wallet_transaction_balance_before
wallet_transaction_balance_after
wallet_transaction_days_value
wallet_transaction_points_value
wallet_transaction_status
reference
wallet_transaction_description
wallet_transaction_metadata
wallet_transaction_created_at
wallet_transaction_updated_at
wallet_transaction_completed_at
}
}
Variables
{"id": 4, "input": UpdateRawWalletTransactionsInput}
Response
{
"data": {
"updateWalletTransaction": {
"wallet_transaction_id": 4,
"wallet_id": 4,
"customer_id": 4,
"sale_id": "4",
"wallet_transaction_ref_id": 4,
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 987.65,
"wallet_transaction_balance_before": 123.45,
"wallet_transaction_balance_after": 123.45,
"wallet_transaction_days_value": 123.45,
"wallet_transaction_points_value": 987.65,
"wallet_transaction_status": "PENDING",
"reference": "abc123",
"wallet_transaction_description": "xyz789",
"wallet_transaction_metadata": {},
"wallet_transaction_created_at": "2007-12-03T10:15:30Z",
"wallet_transaction_updated_at": "2007-12-03T10:15:30Z",
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
}
}
uploadKycDocuments
Description
Upload KYC documents for an existing customer.
Response
Returns a RawCustomersDto!
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UploadKycDocumentsInput!
|
Example
Query
mutation uploadKycDocuments(
$id: ID!,
$input: UploadKycDocumentsInput!
) {
uploadKycDocuments(
id: $id,
input: $input
) {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
middle_name
gender
date_of_birth
secondary_phone
marital_status
application_id
customer_source
customer_source_id
}
organization_details {
trading_name
organization_type
registration_date
tax_id
industry_sector
number_of_employees
application_id
customer_source
customer_source_id
}
contact_person {
name
title
phone
email
}
kyc_documents {
selfie_url
id_front_url
id_back_url
certificate_of_incorporation_url
tax_certificate_url
business_permit_url
associated_phone_numbers
}
next_of_kin {
first_name
other_name
relationship
id_type
id_number
phone_primary
phone_secondary
primary_on_whatsapp
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
latestApplication {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
}
}
Variables
{"id": 4, "input": UploadKycDocumentsInput}
Response
{
"data": {
"uploadKycDocuments": {
"customer_id": 4,
"customer_created_at": "2007-12-03T10:15:30Z",
"customer_type": "INDIVIDUAL",
"customer_phone_number": "xyz789",
"official_id_number": "abc123",
"country": "abc123",
"county": "abc123",
"sub_county": "xyz789",
"ward": "abc123",
"town": "xyz789",
"landmark": "xyz789",
"customer_email_address": "xyz789",
"customer_status": "ACTIVE",
"display_name": "abc123",
"customer_first_name": "xyz789",
"customer_surname_name": "xyz789",
"organization_name": "abc123",
"organization_registration_number": "xyz789",
"individual_details": IndividualDetailsDto,
"organization_details": OrganizationDetailsDto,
"contact_person": ContactPersonDto,
"kyc_documents": KycDocumentsDto,
"next_of_kin": NextOfKinDto,
"total_loans_taken": 987.65,
"active_loans_count": 987.65,
"completed_loans_count": 123.45,
"has_defaulted": true,
"current_credit_score": "abc123",
"metadata": {},
"customer_updated_at": "2007-12-03T10:15:30Z",
"keycloak_id": "abc123",
"referral_code": "abc123",
"applications": [ApplicationEntityGraphQL],
"latestApplication": ApplicationEntityGraphQL
}
}
}
uploadQCReport
Description
Upload QC report
Response
Returns a String!
Arguments
| Name | Description |
|---|---|
input - UploadQCReportInput!
|
Example
Query
mutation uploadQCReport($input: UploadQCReportInput!) {
uploadQCReport(input: $input)
}
Variables
{"input": UploadQCReportInput}
Response
{"data": {"uploadQCReport": "abc123"}}
verifyApplicationOtp
Description
Verify the OTP for an application consent
Response
Returns an ApplicationEntityGraphQL!
Example
Query
mutation verifyApplicationOtp(
$applicationId: ID!,
$otp: String!
) {
verifyApplicationOtp(
applicationId: $applicationId,
otp: $otp
) {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
mpesa_statement
bank_statement
back_id
front_id
selfie
}
customer {
personal_info {
...ApplicationPersonalInfoGraphQLFragment
}
identification {
...ApplicationIdentificationGraphQLFragment
}
location {
...ApplicationLocationGraphQLFragment
}
employment {
...ApplicationEmploymentGraphQLFragment
}
credit_history {
...ApplicationCreditHistoryGraphQLFragment
}
product {
...ApplicationProductGraphQLFragment
}
}
next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
previous_next_of_kin {
first_name
other_name
relationship
identification {
...ApplicationIdentificationGraphQLFragment
}
phone_primary
primary_on_whatsapp
phone_secondary
full_name
}
credit {
credit
credit_process
pending_kyc_tags
system_crb_score
user_crb_score
final_risk_score
status
prospect_status
resubmission_pending_review
customer_bucket
customer_tag
prospect_model
check_by_risk_model
fate_guide
risk_flag
combined_risk_flag
deposit_requirement
advice_customer
customer_credit_fate_reason
last_modified_credit_status
approved_at
product_id
product_name
product_inventory_id
price_plan_id
price_plan_code
price_plan_name
product_cash_price
resubmission_link
initial_weeks
risk_model
validity {
...ApplicationValidityGraphQLFragment
}
metadata
exemption_record {
...ApplicationExemptionRecordGraphQLFragment
}
}
risk {
risk_flag
previous_loans
high_deposit_overide
}
delivery {
delivery_id
rider_id
mpesa_code
delivery_code
rider_submitted_otp
otp_expiry_time
location {
...ApplicationLocationGraphQLFragment
}
front_id
back_id
delivery_status
notes
order_processing {
...SalesProcessingJobStatusGraphQLFragment
}
sale_creation {
...SalesProcessingJobStatusGraphQLFragment
}
}
legacy_references {
lead_id
prospect_id
application_id
}
metadata
timeline {
lead_created
lead_updated
prospect_created
prospect_updated
customer_created
ready_for_scoring
ready_for_calling
ready_for_decision
called_at
scored_at
decisioned_at
device_needed
liveness_created_date
ready_for_screening
screened_at
paused_financial_statement_at
prospect_submitted_at
resubmission_submitted_at
scoring_started_at
first_scored_at
calling_started_at
first_called_at
decision_started_at
first_decisioned_at
last_modified_credit_status_at
}
references {
lead_id
prospect_id
customer_id
crb_transaction_id
resubmission_id
fate_guide_id
final_fate_guide_id
order_id
}
validation_references {
customer_iprs
customer_kra
customer_mpesa
customer_duplicate
nok_iprs
nok_mpesa
nok_duplicate
risk
mpesa_statement
liveness
pre_screening
}
application_type
normal_high_deposit
activeValidationRecords {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
credit_call {
call_details_id
call_type
credit_call_link
}
call_disposition_id
submission_source
leads_screens {
customer
product
consent
termsAndConditions
kycDocuments
creditQuestions
}
prospects_screens {
liveness
nextOfKin
product
images
}
liveness_check {
method
link
}
consent {
sales_approval
terms_and_conditions
source_of_information
verified
verification_phone
referrer_name
created_at
otp
verified_at
}
staff {
scorer {
...ApplicationStaffMemberGraphQLFragment
}
caller {
...ApplicationStaffMemberGraphQLFragment
}
decisioner {
...ApplicationStaffMemberGraphQLFragment
}
sales_agent {
...ApplicationSalesAgentGraphQLFragment
}
submitting_agent {
...ApplicationSalesAgentGraphQLFragment
}
screener {
...ApplicationSalesAgentGraphQLFragment
}
seller {
...ApplicationSalesAgentGraphQLFragment
}
sfm {
...ApplicationSalesAgentGraphQLFragment
}
}
creditProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
customerProduct {
seller_catalog_id
seller_id
sku_id
cost_price
retail_price
currency
stock_on_hand
reserved_stock
is_active
listed_at
updated_at
available_stock
seller {
...SellerObjectTypeFragment
}
sku {
...SkuObjectTypeFragment
}
product {
...ProductObjectTypeFragment
}
}
seller {
seller_id
commission_type_id
tier_id
seller_type
payment_details
capabilities
performance_metrics
overall_rating
total_reviews
total_sales
total_orders_365_days
badges
suspension_reason
approved_by
approved_at
joined_at
updated_at
partner_profile_id
platform_owner
partner_profile {
...PartnerProfileObjectTypeFragment
}
}
salesAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
submittingAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
sfmAgent {
_id
agent_profile_id
user_id {
...UserObjectTypeFragment
}
agent_category
agent_type
agent_status
kyc_status
staff_document_ref {
...InternalStaffProfileObjectTypeFragment
}
partner_document_ref {
...PartnerProfileObjectTypeFragment
}
is_deleted
created_by {
...UserObjectTypeFragment
}
createdAt
updatedAt
permissions {
...ResourcePermissionTypeFragment
}
}
active_resubmission {
_id
prospect_id
lead_id
application_id
changes {
...ResubmissionChangesGraphQLFragment
}
journey
status
submitted_by
validations_to_run
valid_data {
...ResubmissionValidDataGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
validations {
...ApplicationActiveValidationReferencesGraphQLFragment
}
full_name
createdAt
updatedAt
}
createdAt
updatedAt
callDisposition {
_id
application_id
application {
...ApplicationEntityGraphQLFragment
}
disposition
notes
priority
next_call_date
createdAt
updatedAt
}
validation_records {
_id
target
target_id
type
status
action
result
attempts_count
max_attempts
data {
...ValidationDataGraphQLFragment
}
createdAt
updatedAt
application {
...ApplicationEntityGraphQLFragment
}
}
active_validation_records {
customer_iprs {
...ValidationRecordGraphQLEntityFragment
}
customer_kra {
...ValidationRecordGraphQLEntityFragment
}
customer_mpesa {
...ValidationRecordGraphQLEntityFragment
}
customer_duplicate {
...ValidationRecordGraphQLEntityFragment
}
nok_iprs {
...ValidationRecordGraphQLEntityFragment
}
nok_mpesa {
...ValidationRecordGraphQLEntityFragment
}
nok_duplicate {
...ValidationRecordGraphQLEntityFragment
}
risk {
...ValidationRecordGraphQLEntityFragment
}
mpesa_statement {
...ValidationRecordGraphQLEntityFragment
}
liveness {
...ValidationRecordGraphQLEntityFragment
}
pre_screening {
...ValidationRecordGraphQLEntityFragment
}
}
creditCallDetails {
_id
application_id
status
notes
agent_name
caller_id
delivery_location_type
priority
call_date
follow_up_required
customer_location
employer_info
employment_details
delivery_location
product_choice
confirmed_price_plan
geo_address
delivery_or_collection_location
other_delivery_notes
call_type
call_outcome
call_notes
call_ended_at
call_started_at
call_duration_seconds
nok {
...CallDetailsNokTypeFragment
}
customer_general_location
preferred_delivery_day
preferred_delivery_slot
work_location
work_location_link
screening_consent
accept_loan_terms
extras
createdAt
updatedAt
}
activeCreditPricePlan {
cash_price
deposit_amount
deposit_amount_high
subsequent_loan_discount_percent
subsequent_loan_initial_pay
subsequent_loan_total_customer_pays
loan_principal
loan_principal_high
total_loan_amount
total_loan_amount_high
outstanding_loan
outstanding_loan_high
mocare_value
total_customer_pays
total_customer_pays_high
accurate_total_customer_pays
accurate_total_customer_pays_high
instalment_amount
instalment_amount_high
daily_instalment_amount
daily_instalment_amount_high
weekly_instalment_amount
weekly_instalment_amount_high
monthly_instalment_amount
monthly_instalment_amount_high
weekly_installment_count_high
duration_months
duration_months_high
payment_frequency
plan_code
plan_id
plan_name
early_payoff_discounts {
...EarlyPayoffDiscountTypeFragment
}
}
}
}
Variables
{"applicationId": 4, "otp": "abc123"}
Response
{
"data": {
"verifyApplicationOtp": {
"_id": 4,
"customer_id": "xyz789",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["abc123"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "abc123",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [
ValidationRecordGraphQLEntity
],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
}
}
verifyOtp
Response
Returns an AuthResponse!
Arguments
| Name | Description |
|---|---|
input - VerifyOtpInput!
|
Example
Query
mutation verifyOtp($input: VerifyOtpInput!) {
verifyOtp(input: $input) {
access_token
refresh_token
expires_in
refresh_expires_in
token_type
user {
_id
id
keycloak_id
username
email
first_name
surname
last_name
phone_number
role
enabled
user_type
is_internal
first_login
last_login
availability_status
synced_at
group_memberships
permissions
created_at
updated_at
}
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
}
}
Variables
{"input": VerifyOtpInput}
Response
{
"data": {
"verifyOtp": {
"access_token": "abc123",
"refresh_token": "abc123",
"expires_in": 123,
"refresh_expires_in": 123,
"token_type": "abc123",
"user": UserObjectType,
"customer": RawCustomersDto
}
}
}
Subscriptions
applicationUpdate
Description
Subscribe to application state updates
Response
Returns an ApplicationUpdatePayload!
Arguments
| Name | Description |
|---|---|
applicationId - ID
|
Example
Query
subscription applicationUpdate($applicationId: ID) {
applicationUpdate(applicationId: $applicationId) {
applicationId
applicationState
creditState
prospectStage
changes
timestamp
}
}
Variables
{"applicationId": "4"}
Response
{
"data": {
"applicationUpdate": {
"applicationId": "4",
"applicationState": "abc123",
"creditState": "abc123",
"prospectStage": "xyz789",
"changes": {},
"timestamp": "2007-12-03T10:15:30Z"
}
}
}
configUpdate
Description
Subscribe to config updates
Response
Returns a ConfigUpdatePayload!
Example
Query
subscription configUpdate(
$key: String,
$category: String,
$clientId: String
) {
configUpdate(
key: $key,
category: $category,
clientId: $clientId
) {
key
value
category
clientId
timestamp
}
}
Variables
{
"key": "xyz789",
"category": "abc123",
"clientId": "abc123"
}
Response
{
"data": {
"configUpdate": {
"key": "xyz789",
"value": {},
"category": "xyz789",
"clientId": "abc123",
"timestamp": "2007-12-03T10:15:30Z"
}
}
}
gateStatusUpdate
Description
Subscribe to gate status updates
Response
Returns a GateStatusPayload!
Arguments
| Name | Description |
|---|---|
gate - String
|
Filter by specific gate name |
Example
Query
subscription gateStatusUpdate($gate: String) {
gateStatusUpdate(gate: $gate) {
gate
status
message
timestamp
}
}
Variables
{"gate": "abc123"}
Response
{
"data": {
"gateStatusUpdate": {
"gate": "abc123",
"status": "xyz789",
"message": "abc123",
"timestamp": "2007-12-03T10:15:30Z"
}
}
}
orderStatusChanged
Response
Returns an OrderObjectType!
Arguments
| Name | Description |
|---|---|
customerId - ID!
|
Example
Query
subscription orderStatusChanged($customerId: ID!) {
orderStatusChanged(customerId: $customerId) {
order_id
customer_id
order_status
payment_status
shipping_address {
street
city
state
postal_code
country
geo {
...OrderGeoFragment
}
}
currency
sub_total
total_discount
delivery_fee
service_fee
tax_amount
total_amount
application_id
sale_agent_id
submitting_agent_id
manual_override
order_date
created_at
updated_at
metadata
customer {
customer_id
customer_created_at
customer_type
customer_phone_number
official_id_number
country
county
sub_county
ward
town
landmark
customer_email_address
customer_status
display_name
customer_first_name
customer_surname_name
organization_name
organization_registration_number
individual_details {
...IndividualDetailsDtoFragment
}
organization_details {
...OrganizationDetailsDtoFragment
}
contact_person {
...ContactPersonDtoFragment
}
kyc_documents {
...KycDocumentsDtoFragment
}
next_of_kin {
...NextOfKinDtoFragment
}
total_loans_taken
active_loans_count
completed_loans_count
has_defaulted
current_credit_score
metadata
customer_updated_at
keycloak_id
referral_code
applications {
...ApplicationEntityGraphQLFragment
}
latestApplication {
...ApplicationEntityGraphQLFragment
}
}
application {
_id
customer_id
application_state
credit_state
prospect_stage
application_channel
kyc_documents
active_kyc_documents {
...ApplicationActiveKycDocumentsGraphQLFragment
}
customer {
...ApplicationCustomerGraphQLFragment
}
next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
previous_next_of_kin {
...ApplicationNextOfKinGraphQLFragment
}
credit {
...ApplicationCreditGraphQLFragment
}
risk {
...ApplicationRiskGraphQLFragment
}
delivery {
...ApplicationDeliveryGraphQLFragment
}
legacy_references {
...ApplicationLegacyReferencesGraphQLFragment
}
metadata
timeline {
...ApplicationTimelineGraphQLFragment
}
references {
...ApplicationReferencesGraphQLFragment
}
validation_references {
...ApplicationValidationReferencesGraphQLFragment
}
application_type
normal_high_deposit
activeValidationRecords {
...ApplicationActiveValidationReferencesGraphQLFragment
}
credit_call {
...ApplicationCreditCallGraphQLFragment
}
call_disposition_id
submission_source
leads_screens {
...LeadsScreensGraphQLFragment
}
prospects_screens {
...ProspectsScreensGraphQLFragment
}
liveness_check {
...ApplicationLivenessCheckGraphQLFragment
}
consent {
...ApplicationConsentGraphQLFragment
}
staff {
...ApplicationStaffGraphQLFragment
}
creditProduct {
...SellerCatalogObjectTypeFragment
}
customerProduct {
...SellerCatalogObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
salesAgent {
...AgentProfileObjectTypeFragment
}
submittingAgent {
...AgentProfileObjectTypeFragment
}
sfmAgent {
...AgentProfileObjectTypeFragment
}
active_resubmission {
...ApplicationResubmissionGraphQLFragment
}
createdAt
updatedAt
callDisposition {
...CallDispositionTypeFragment
}
validation_records {
...ValidationRecordGraphQLEntityFragment
}
active_validation_records {
...ApplicationActiveValidationReferencesGraphQLFragment
}
creditCallDetails {
...ApplicationCallDetailsTypeFragment
}
activeCreditPricePlan {
...PricingCalculationTypeFragment
}
}
orderItems {
order_item_id
order_id
seller_id
item_type
catalog_id
quantity
unit_price
discount_amount
adjustments
subtotal
purchase_type
status
metadata
created_at
updated_at
sellerCatalog {
...SellerCatalogObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
delivery_items {
...DeliveryItemObjectTypeFragment
}
inventory_allocations {
...InventoryAllocationObjectTypeFragment
}
inventory_allocation {
...InventoryAllocationObjectTypeFragment
}
}
deliveries {
delivery_id
order_id
seller_id
assigned_rider_id
delivery_status
delivery_address {
...DeliveryAddressFragment
}
tracking_number
provider_info {
...ProviderInfoFragment
}
proof_of_delivery {
...ProofOfDeliveryFragment
}
delivery_notes
destination_location {
...GeoLocationFragment
}
estimated_arrival
actual_arrival
metadata
assigned_rider {
...UserObjectTypeFragment
}
seller {
...SellerObjectTypeFragment
}
order {
...OrderObjectTypeFragment
}
items {
...DeliveryItemObjectTypeFragment
}
calls {
...DeliveryCallObjectTypeFragment
}
latestAnsweredCall {
...DeliveryCallObjectTypeFragment
}
created_at
updated_at
deliveryItems {
...DeliveryItemObjectTypeFragment
}
}
sales {
sale_id
sale_date
order_id
customer_id
sale_agent_id
submitting_agent_id
sfm_id
price_plan_id
pricePlan {
...PricePlanObjectTypeFragment
}
inventory_id
inventory {
...InventoryObjectTypeFragment
}
payment_type
payment_status
normal_high_deposit
final_sale_price
upfront_payment
gross_loan_amount
marketplace_fee
seller_payout
invoice_number
status
return_date
created_at
metadata
customer {
...RawCustomersDtoFragment
}
order {
...OrderObjectTypeFragment
}
loan_contract {
...LoanContractDtoFragment
}
commission {
...CommissionSnapshotTypeFragment
}
cash_price
reporting {
...SaleReportingTypeFragment
}
}
deliveryCalls {
call_id
order_id
called_by
caller {
...UserObjectTypeFragment
}
confirmed_delivery_location {
...ConfirmedDeliveryLocationObjectTypeFragment
}
spec_preference {
...SpecPreferenceObjectTypeFragment
}
confirmed_delivery_date
confirmed_delivery_slot
call_time
outcome
confirmed_delivery_type
confirmed_delivery_type_name
notes
metadata
created_at
order {
...OrderObjectTypeFragment
}
}
}
}
Variables
{"customerId": "4"}
Response
{
"data": {
"orderStatusChanged": {
"order_id": "4",
"customer_id": "4",
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "abc123",
"sub_total": 987.65,
"total_discount": 987.65,
"delivery_fee": 123.45,
"service_fee": 123.45,
"tax_amount": 987.65,
"total_amount": 123.45,
"application_id": "abc123",
"sale_agent_id": "abc123",
"submitting_agent_id": "abc123",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
}
}
pushRoleNotificationCreated
Description
Subscribe to push notifications created for a specific role
Response
Returns a CommunicationObjectType!
Arguments
| Name | Description |
|---|---|
roleId - String!
|
The role ID to subscribe to push notifications for |
Example
Query
subscription pushRoleNotificationCreated($roleId: String!) {
pushRoleNotificationCreated(roleId: $roleId) {
_id
id
userId
channel
status
type
message {
title
body
subject
}
emailData {
to
from
cc
bcc
replyTo
attachments {
...EmailAttachmentObjectTypeFragment
}
html
text
templateId
templateData
}
smsData {
to
from
message
shortcode
campaignId
}
pushData {
targetType
targetId
title
body
image
clickAction
data
}
inAppData {
actionUrl
actionButtonText
priority
category
}
delivery {
sentAt
deliveredAt
failedAt
readAt
clickedAt
error
externalId
provider
providerResponse
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
}
Variables
{"roleId": "xyz789"}
Response
{
"data": {
"pushRoleNotificationCreated": {
"_id": "4",
"id": "abc123",
"userId": "abc123",
"channel": "PUSH",
"status": "PENDING",
"type": "INFO",
"message": BaseMessageObjectType,
"emailData": EmailDataObjectType,
"smsData": SmsDataObjectType,
"pushData": PushDataObjectType,
"inAppData": InAppDataObjectType,
"delivery": DeliveryInfoObjectType,
"retryCount": 987,
"maxRetries": 987,
"campaignId": "abc123",
"campaignName": "abc123",
"tags": ["xyz789"],
"scheduledFor": "2007-12-03T10:15:30Z",
"timezone": "xyz789",
"queueJobId": "xyz789",
"queueName": "xyz789",
"priority": 123,
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
pushUserNotificationCreated
Description
Subscribe to push notifications created for a specific user
Response
Returns a CommunicationObjectType!
Arguments
| Name | Description |
|---|---|
userId - String!
|
The user ID to subscribe to push notifications for |
Example
Query
subscription pushUserNotificationCreated($userId: String!) {
pushUserNotificationCreated(userId: $userId) {
_id
id
userId
channel
status
type
message {
title
body
subject
}
emailData {
to
from
cc
bcc
replyTo
attachments {
...EmailAttachmentObjectTypeFragment
}
html
text
templateId
templateData
}
smsData {
to
from
message
shortcode
campaignId
}
pushData {
targetType
targetId
title
body
image
clickAction
data
}
inAppData {
actionUrl
actionButtonText
priority
category
}
delivery {
sentAt
deliveredAt
failedAt
readAt
clickedAt
error
externalId
provider
providerResponse
}
retryCount
maxRetries
campaignId
campaignName
tags
scheduledFor
timezone
queueJobId
queueName
priority
metadata
createdAt
updatedAt
}
}
Variables
{"userId": "xyz789"}
Response
{
"data": {
"pushUserNotificationCreated": {
"_id": 4,
"id": "abc123",
"userId": "xyz789",
"channel": "PUSH",
"status": "PENDING",
"type": "INFO",
"message": BaseMessageObjectType,
"emailData": EmailDataObjectType,
"smsData": SmsDataObjectType,
"pushData": PushDataObjectType,
"inAppData": InAppDataObjectType,
"delivery": DeliveryInfoObjectType,
"retryCount": 987,
"maxRetries": 987,
"campaignId": "xyz789",
"campaignName": "xyz789",
"tags": ["abc123"],
"scheduledFor": "2007-12-03T10:15:30Z",
"timezone": "xyz789",
"queueJobId": "abc123",
"queueName": "xyz789",
"priority": 123,
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
resubmissionValidationUpdate
Description
Subscribe to validation updates for a resubmission
Response
Returns a ValidationUpdatePayload!
Arguments
| Name | Description |
|---|---|
resubmissionId - ID
|
Example
Query
subscription resubmissionValidationUpdate($resubmissionId: ID) {
resubmissionValidationUpdate(resubmissionId: $resubmissionId) {
targetId
type
status
result
data
timestamp
}
}
Variables
{"resubmissionId": 4}
Response
{
"data": {
"resubmissionValidationUpdate": {
"targetId": 4,
"type": "CUSTOMER_IPRS",
"status": "RUNNING",
"result": true,
"data": {},
"timestamp": "2007-12-03T10:15:30Z"
}
}
}
validationUpdate
Description
Subscribe to validation updates for an application
Response
Returns a ValidationUpdatePayload!
Arguments
| Name | Description |
|---|---|
applicationId - ID!
|
Example
Query
subscription validationUpdate($applicationId: ID!) {
validationUpdate(applicationId: $applicationId) {
targetId
type
status
result
data
timestamp
}
}
Variables
{"applicationId": "4"}
Response
{
"data": {
"validationUpdate": {
"targetId": 4,
"type": "CUSTOMER_IPRS",
"status": "RUNNING",
"result": false,
"data": {},
"timestamp": "2007-12-03T10:15:30Z"
}
}
}
Customer
ApplicationActiveKycDocumentsGraphQL
Example
{
"mpesa_statement": "abc123",
"bank_statement": "abc123",
"back_id": "abc123",
"front_id": "xyz789",
"selfie": "xyz789"
}
ApplicationActiveKycDocumentsInput
Example
{
"mpesa_statement": "abc123",
"bank_statement": "abc123",
"back_id": "abc123",
"front_id": "xyz789",
"selfie": "xyz789"
}
ApplicationActiveKycMediaAssetsGraphQL
Fields
| Field Name | Description |
|---|---|
mpesa_statement - MediaAssetDto
|
M-Pesa statement document |
bank_statement - MediaAssetDto
|
Bank statement document |
front_id - MediaAssetDto
|
Front ID document |
back_id - MediaAssetDto
|
Back ID document |
selfie - MediaAssetDto
|
Selfie document |
Example
{
"mpesa_statement": MediaAssetDto,
"bank_statement": MediaAssetDto,
"front_id": MediaAssetDto,
"back_id": MediaAssetDto,
"selfie": MediaAssetDto
}
ApplicationActiveValidationReferencesGraphQL
Fields
| Field Name | Description |
|---|---|
customer_iprs - ValidationRecordGraphQLEntity
|
Customer IPRS validation record |
customer_kra - ValidationRecordGraphQLEntity
|
Customer KRA validation record |
customer_mpesa - ValidationRecordGraphQLEntity
|
Customer MPESA validation record |
customer_duplicate - ValidationRecordGraphQLEntity
|
Customer duplicate validation record |
nok_iprs - ValidationRecordGraphQLEntity
|
NOK IPRS validation record |
nok_mpesa - ValidationRecordGraphQLEntity
|
NOK MPESA validation record |
nok_duplicate - ValidationRecordGraphQLEntity
|
NOK duplicate validation record |
risk - ValidationRecordGraphQLEntity
|
Risk validation record |
mpesa_statement - ValidationRecordGraphQLEntity
|
MPESA statement validation record |
liveness - ValidationRecordGraphQLEntity
|
Liveness validation record |
pre_screening - ValidationRecordGraphQLEntity
|
Pre screening validation record |
Example
{
"customer_iprs": ValidationRecordGraphQLEntity,
"customer_kra": ValidationRecordGraphQLEntity,
"customer_mpesa": ValidationRecordGraphQLEntity,
"customer_duplicate": ValidationRecordGraphQLEntity,
"nok_iprs": ValidationRecordGraphQLEntity,
"nok_mpesa": ValidationRecordGraphQLEntity,
"nok_duplicate": ValidationRecordGraphQLEntity,
"risk": ValidationRecordGraphQLEntity,
"mpesa_statement": ValidationRecordGraphQLEntity,
"liveness": ValidationRecordGraphQLEntity,
"pre_screening": ValidationRecordGraphQLEntity
}
ApplicationCallDetailsFilterInput
Description
Filter input for application call detail queries
Fields
| Input Field | Description |
|---|---|
application_id - ID
|
Filter by application ID |
call_type - CreditCallTypeEnum
|
Filter by call type |
status - StringFilterInput
|
Filter by status |
agent_name - StringFilterInput
|
Filter by agent name |
caller_id - StringFilterInput
|
Filter by caller ID |
call_outcome - StringFilterInput
|
Filter by call outcome |
call_date - DateFilterInput
|
Filter by call date |
call_started_at - DateFilterInput
|
Filter by call started at |
and - [ApplicationCallDetailsFilterInput!]
|
All conditions must match |
or - [ApplicationCallDetailsFilterInput!]
|
At least one condition must match |
Example
{
"application_id": 4,
"call_type": "NOK",
"status": StringFilterInput,
"agent_name": StringFilterInput,
"caller_id": StringFilterInput,
"call_outcome": StringFilterInput,
"call_date": DateFilterInput,
"call_started_at": DateFilterInput,
"and": [ApplicationCallDetailsFilterInput],
"or": [ApplicationCallDetailsFilterInput]
}
ApplicationCallDetailsType
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
application_id - ID!
|
|
status - String
|
|
notes - String
|
|
agent_name - String
|
|
caller_id - String
|
|
delivery_location_type - String
|
|
priority - String
|
|
call_date - DateTime
|
|
follow_up_required - Boolean
|
|
customer_location - String
|
|
employer_info - String
|
|
employment_details - String
|
|
delivery_location - String
|
|
product_choice - String
|
|
confirmed_price_plan - String
|
|
geo_address - String
|
|
delivery_or_collection_location - String
|
|
other_delivery_notes - String
|
|
call_type - CreditCallTypeEnum
|
|
call_outcome - String
|
|
call_notes - String
|
|
call_ended_at - DateTime
|
|
call_started_at - DateTime
|
|
call_duration_seconds - Float
|
|
nok - CallDetailsNokType
|
|
customer_general_location - String
|
|
preferred_delivery_day - DateTime
|
|
preferred_delivery_slot - String
|
|
work_location - String
|
|
work_location_link - String
|
|
screening_consent - String
|
|
accept_loan_terms - String
|
|
extras - JSON
|
|
createdAt - DateTime!
|
|
updatedAt - DateTime!
|
Example
{
"_id": "4",
"application_id": 4,
"status": "abc123",
"notes": "xyz789",
"agent_name": "xyz789",
"caller_id": "abc123",
"delivery_location_type": "xyz789",
"priority": "abc123",
"call_date": "2007-12-03T10:15:30Z",
"follow_up_required": false,
"customer_location": "abc123",
"employer_info": "xyz789",
"employment_details": "xyz789",
"delivery_location": "xyz789",
"product_choice": "abc123",
"confirmed_price_plan": "abc123",
"geo_address": "xyz789",
"delivery_or_collection_location": "xyz789",
"other_delivery_notes": "xyz789",
"call_type": "NOK",
"call_outcome": "abc123",
"call_notes": "abc123",
"call_ended_at": "2007-12-03T10:15:30Z",
"call_started_at": "2007-12-03T10:15:30Z",
"call_duration_seconds": 987.65,
"nok": CallDetailsNokType,
"customer_general_location": "xyz789",
"preferred_delivery_day": "2007-12-03T10:15:30Z",
"preferred_delivery_slot": "xyz789",
"work_location": "xyz789",
"work_location_link": "abc123",
"screening_consent": "abc123",
"accept_loan_terms": "xyz789",
"extras": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
ApplicationChannelEnum
Description
Channel through which application was submitted
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"SALES_APP"
ApplicationChannelFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ApplicationChannelEnum
|
|
ne - ApplicationChannelEnum
|
|
in - [ApplicationChannelEnum!]
|
|
notIn - [ApplicationChannelEnum!]
|
Example
{
"eq": "SALES_APP",
"ne": "SALES_APP",
"in": ["SALES_APP"],
"notIn": ["SALES_APP"]
}
ApplicationConsentGraphQL
Fields
| Field Name | Description |
|---|---|
sales_approval - Boolean
|
Sales agent approval |
terms_and_conditions - Boolean
|
Terms and conditions accepted |
source_of_information - String
|
Source of information |
verified - Boolean
|
Whether consent was verified via OTP |
verification_phone - String
|
Phone used for OTP verification |
referrer_name - String
|
Referrer name |
created_at - DateTime
|
Consent creation timestamp |
otp - String
|
OTP for consent verification |
verified_at - DateTime
|
Consent verification timestamp |
Example
{
"sales_approval": true,
"terms_and_conditions": false,
"source_of_information": "xyz789",
"verified": true,
"verification_phone": "abc123",
"referrer_name": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"otp": "xyz789",
"verified_at": "2007-12-03T10:15:30Z"
}
ApplicationConsentInput
Fields
| Input Field | Description |
|---|---|
sales_approval - Boolean
|
Sales approval consent |
terms_and_conditions - Boolean
|
Terms and conditions acceptance |
source_of_information - String
|
Source of information |
verified - Boolean
|
Whether consent is verified |
verification_phone - String
|
Verification phone number |
otp - String
|
OTP for verification |
created_at - DateTime
|
Consent creation timestamp |
verified_at - DateTime
|
Verification timestamp |
referrer_name - String
|
Referrer name |
Example
{
"sales_approval": false,
"terms_and_conditions": true,
"source_of_information": "abc123",
"verified": false,
"verification_phone": "abc123",
"otp": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"verified_at": "2007-12-03T10:15:30Z",
"referrer_name": "abc123"
}
ApplicationCreditCallGraphQL
Fields
| Field Name | Description |
|---|---|
call_details_id - String
|
Call details document ID |
call_type - CreditCallTypeEnum
|
Type of credit call — NOK or NO_NOK |
credit_call_link - String
|
Link to the credit call recording |
Example
{
"call_details_id": "abc123",
"call_type": "NOK",
"credit_call_link": "xyz789"
}
ApplicationCreditCallInput
Fields
| Input Field | Description |
|---|---|
call_details_id - String
|
Call details document ID |
call_type - CreditCallTypeEnum
|
Type of credit call — NOK or NO_NOK |
credit_call_link - String
|
Link to the credit call recording |
Example
{
"call_details_id": "abc123",
"call_type": "NOK",
"credit_call_link": "xyz789"
}
ApplicationCreditFilterInput
Description
Filter by credit fields
Fields
| Input Field | Description |
|---|---|
status - StringFilterInput
|
|
prospect_status - StringFilterInput
|
|
combined_risk_flag - StringFilterInput
|
|
customer_bucket - StringFilterInput
|
|
customer_tag - StringFilterInput
|
|
product_id - StringFilterInput
|
|
risk_model - StringFilterInput
|
|
credit - StringFilterInput
|
|
risk_flag - StringFilterInput
|
|
approved_at - DateFilterInput
|
|
last_modified_credit_status - DateFilterInput
|
|
price_plan_id - StringFilterInput
|
|
price_plan_code - StringFilterInput
|
|
price_plan_name - StringFilterInput
|
|
product_name - StringFilterInput
|
|
prospect_model - StringFilterInput
|
|
deposit_requirement - StringFilterInput
|
|
exemption_record - ApplicationExemptionRecordFilterInput
|
|
resubmission_pending_review - BooleanFilterInput
|
Filter by whether agent committed resubmission and scorer must re-review |
Example
{
"status": StringFilterInput,
"prospect_status": StringFilterInput,
"combined_risk_flag": StringFilterInput,
"customer_bucket": StringFilterInput,
"customer_tag": StringFilterInput,
"product_id": StringFilterInput,
"risk_model": StringFilterInput,
"credit": StringFilterInput,
"risk_flag": StringFilterInput,
"approved_at": DateFilterInput,
"last_modified_credit_status": DateFilterInput,
"price_plan_id": StringFilterInput,
"price_plan_code": StringFilterInput,
"price_plan_name": StringFilterInput,
"product_name": StringFilterInput,
"prospect_model": StringFilterInput,
"deposit_requirement": StringFilterInput,
"exemption_record": ApplicationExemptionRecordFilterInput,
"resubmission_pending_review": BooleanFilterInput
}
ApplicationCreditGraphQL
Fields
| Field Name | Description |
|---|---|
credit - String
|
Credit decision status |
credit_process - [String!]
|
Credit process steps Deprecated |
pending_kyc_tags - [String!]
|
Pending KYC tags |
system_crb_score - String
|
System CRB score |
user_crb_score - String
|
User CRB score |
final_risk_score - String
|
Final risk score |
status - CallStatus
|
Credit call status |
prospect_status - String
|
Prospect status |
resubmission_pending_review - Boolean
|
True when agent committed resubmission corrections and scorer must re-review |
customer_bucket - String
|
Customer bucket classification |
customer_tag - String
|
Customer tag |
prospect_model - String
|
Prospect model |
check_by_risk_model - [String!]
|
Check by risk model Deprecated |
fate_guide - String
|
Fate guide |
risk_flag - String
|
Risk flag |
combined_risk_flag - String
|
Combined risk flag |
deposit_requirement - String
|
Deposit requirement |
advice_customer - String
|
Advice for customer |
customer_credit_fate_reason - String
|
Customer credit fate reason |
last_modified_credit_status - DateTime
|
Last modified credit status timestamp |
approved_at - DateTime
|
Approval timestamp |
product_id - String
|
Product ID |
product_name - String
|
Product name |
product_inventory_id - String
|
Product inventory ID |
price_plan_id - String
|
Price plan ID |
price_plan_code - String
|
Price plan code |
price_plan_name - String
|
Price plan name |
product_cash_price - Float
|
Cash price of the product |
resubmission_link - String
|
Resubmission link |
initial_weeks - Int
|
Initial weeks |
risk_model - String
|
Risk model |
validity - ApplicationValidityGraphQL
|
Document validity information |
metadata - JSON
|
Credit metadata |
exemption_record - ApplicationExemptionRecordGraphQL
|
Example
{
"credit": "abc123",
"credit_process": ["abc123"],
"pending_kyc_tags": ["xyz789"],
"system_crb_score": "xyz789",
"user_crb_score": "abc123",
"final_risk_score": "xyz789",
"status": "ready",
"prospect_status": "xyz789",
"resubmission_pending_review": false,
"customer_bucket": "abc123",
"customer_tag": "xyz789",
"prospect_model": "xyz789",
"check_by_risk_model": ["xyz789"],
"fate_guide": "xyz789",
"risk_flag": "xyz789",
"combined_risk_flag": "xyz789",
"deposit_requirement": "xyz789",
"advice_customer": "abc123",
"customer_credit_fate_reason": "xyz789",
"last_modified_credit_status": "2007-12-03T10:15:30Z",
"approved_at": "2007-12-03T10:15:30Z",
"product_id": "abc123",
"product_name": "abc123",
"product_inventory_id": "xyz789",
"price_plan_id": "xyz789",
"price_plan_code": "xyz789",
"price_plan_name": "xyz789",
"product_cash_price": 987.65,
"resubmission_link": "xyz789",
"initial_weeks": 987,
"risk_model": "xyz789",
"validity": ApplicationValidityGraphQL,
"metadata": {},
"exemption_record": ApplicationExemptionRecordGraphQL
}
ApplicationCreditHistoryGraphQL
Fields
| Field Name | Description |
|---|---|
active_loans - Boolean
|
Whether applicant has active loans |
defaulted_loans - Boolean
|
Whether applicant has defaulted loans |
loan_denials - Boolean
|
Whether applicant has loan denials |
last_income_date - DateTime
|
Date of last income |
previous_loans - Boolean
|
Whether applicant has previous loans |
next_income_date - DateTime
|
Date of next expected income |
previous_device - String
|
Previous device owned |
Example
{
"active_loans": true,
"defaulted_loans": false,
"loan_denials": true,
"last_income_date": "2007-12-03T10:15:30Z",
"previous_loans": false,
"next_income_date": "2007-12-03T10:15:30Z",
"previous_device": "abc123"
}
ApplicationCreditHistoryInput
ApplicationCreditInput
Fields
| Input Field | Description |
|---|---|
credit - String
|
Credit decision |
credit_process - [String!]
|
Credit process steps |
pending_kyc_tags - [String!]
|
Pending KYC tags |
system_crb_score - String
|
System CRB score |
user_crb_score - String
|
User CRB score |
final_risk_score - String
|
Final Risk score |
status - String
|
Application status |
prospect_status - String
|
Prospect status |
resubmission_pending_review - Boolean
|
True when agent committed resubmission corrections and scorer must re-review |
prospect_model - String
|
Prospect model |
customer_bucket - String
|
Customer bucket |
customer_tag - String
|
Customer tag |
check_by_risk_model - [String!]
|
Risk model checks |
fate_guide - String
|
Fate guide |
combined_risk_flag - String
|
Combined risk flag |
risk_flag - String
|
Risk flag |
deposit_requirement - String
|
Deposit requirement |
advice_customer - String
|
Customer advice |
customer_credit_fate_reason - String
|
Credit fate reason |
last_modified_credit_status - DateTime
|
Last modified credit status timestamp |
approved_at - DateTime
|
Approval timestamp |
product_id - String
|
Product ID |
product_name - String
|
Product name |
product_inventory_id - String
|
Product inventory ID |
price_plan_id - String
|
Price plan ID |
price_plan_code - String
|
Price plan code |
price_plan_name - String
|
Price plan name |
product_cash_price - Float
|
Cash price of the product |
resubmission_link - String
|
Resubmission link |
initial_weeks - Float
|
Initial weeks |
metadata - JSON
|
Additional metadata |
validity - ApplicationValidityInput
|
Validity information |
exemption_record - ApplicationExemptionRecordInput
|
Example
{
"credit": "abc123",
"credit_process": ["abc123"],
"pending_kyc_tags": ["abc123"],
"system_crb_score": "abc123",
"user_crb_score": "xyz789",
"final_risk_score": "xyz789",
"status": "abc123",
"prospect_status": "abc123",
"resubmission_pending_review": false,
"prospect_model": "abc123",
"customer_bucket": "xyz789",
"customer_tag": "xyz789",
"check_by_risk_model": ["abc123"],
"fate_guide": "xyz789",
"combined_risk_flag": "xyz789",
"risk_flag": "abc123",
"deposit_requirement": "abc123",
"advice_customer": "abc123",
"customer_credit_fate_reason": "xyz789",
"last_modified_credit_status": "2007-12-03T10:15:30Z",
"approved_at": "2007-12-03T10:15:30Z",
"product_id": "xyz789",
"product_name": "xyz789",
"product_inventory_id": "xyz789",
"price_plan_id": "xyz789",
"price_plan_code": "abc123",
"price_plan_name": "abc123",
"product_cash_price": 123.45,
"resubmission_link": "xyz789",
"initial_weeks": 987.65,
"metadata": {},
"validity": ApplicationValidityInput,
"exemption_record": ApplicationExemptionRecordInput
}
ApplicationCustomerFilterInput
Description
Filter by customer fields
Fields
| Input Field | Description |
|---|---|
personal_info - ApplicationPersonalInfoFilterInput
|
|
identification - ApplicationIdentificationFilterInput
|
|
location - ApplicationLocationFilterInput
|
|
product - ApplicationProductFilterInput
|
|
employment - ApplicationEmploymentFilterInput
|
Example
{
"personal_info": ApplicationPersonalInfoFilterInput,
"identification": ApplicationIdentificationFilterInput,
"location": ApplicationLocationFilterInput,
"product": ApplicationProductFilterInput,
"employment": ApplicationEmploymentFilterInput
}
ApplicationCustomerGraphQL
Fields
| Field Name | Description |
|---|---|
personal_info - ApplicationPersonalInfoGraphQL
|
Personal information |
identification - ApplicationIdentificationGraphQL
|
Identification details |
location - ApplicationLocationGraphQL
|
Location information |
employment - ApplicationEmploymentGraphQL
|
Employment details |
credit_history - ApplicationCreditHistoryGraphQL
|
Credit history |
product - ApplicationProductGraphQL
|
Product information |
Example
{
"personal_info": ApplicationPersonalInfoGraphQL,
"identification": ApplicationIdentificationGraphQL,
"location": ApplicationLocationGraphQL,
"employment": ApplicationEmploymentGraphQL,
"credit_history": ApplicationCreditHistoryGraphQL,
"product": ApplicationProductGraphQL
}
ApplicationCustomerInput
Fields
| Input Field | Description |
|---|---|
personal_info - ApplicationPersonalInfoInput
|
Personal information |
identification - ApplicationIdentificationInput
|
Identification details |
location - ApplicationLocationInput
|
Location information |
employment - ApplicationEmploymentInput
|
Employment details |
credit_history - ApplicationCreditHistoryInput
|
Credit history |
product - ApplicationProductInput
|
Product information |
Example
{
"personal_info": ApplicationPersonalInfoInput,
"identification": ApplicationIdentificationInput,
"location": ApplicationLocationInput,
"employment": ApplicationEmploymentInput,
"credit_history": ApplicationCreditHistoryInput,
"product": ApplicationProductInput
}
ApplicationDeliveryFilterInput
Description
Filter by delivery fields
Fields
| Input Field | Description |
|---|---|
rider_id - StringFilterInput
|
|
delivery_status - StringFilterInput
|
Example
{
"rider_id": StringFilterInput,
"delivery_status": StringFilterInput
}
ApplicationDeliveryGraphQL
Fields
| Field Name | Description |
|---|---|
delivery_id - String
|
Delivery ID |
rider_id - String
|
Rider ID |
mpesa_code - String
|
M-Pesa payment code |
delivery_code - String
|
Delivery code |
rider_submitted_otp - String
|
OTP submitted by rider |
otp_expiry_time - DateTime
|
OTP expiry time |
location - ApplicationLocationGraphQL
|
Delivery location |
front_id - String
|
Front ID document reference |
back_id - String
|
Back ID document reference |
delivery_status - String
|
Delivery status |
notes - String
|
Delivery notes |
order_processing - SalesProcessingJobStatusGraphQL
|
Background job status for order creation (deposit & delivery) |
sale_creation - SalesProcessingJobStatusGraphQL
|
Background job status for sale creation (loan) |
Example
{
"delivery_id": "xyz789",
"rider_id": "abc123",
"mpesa_code": "abc123",
"delivery_code": "xyz789",
"rider_submitted_otp": "xyz789",
"otp_expiry_time": "2007-12-03T10:15:30Z",
"location": ApplicationLocationGraphQL,
"front_id": "xyz789",
"back_id": "abc123",
"delivery_status": "xyz789",
"notes": "xyz789",
"order_processing": SalesProcessingJobStatusGraphQL,
"sale_creation": SalesProcessingJobStatusGraphQL
}
ApplicationDeliveryInput
Fields
| Input Field | Description |
|---|---|
rider_id - String
|
Rider ID |
mpesa_code - String
|
M-Pesa confirmation code |
delivery_code - String
|
Delivery code |
rider_submitted_otp - String
|
OTP submitted by rider |
otp_expiry_time - DateTime
|
OTP expiry time |
location - ApplicationLocationInput
|
Delivery location |
front_id - String
|
Front ID photo |
back_id - String
|
Back ID photo |
delivery_status - String
|
Delivery status |
notes - String
|
Delivery notes |
Example
{
"rider_id": "xyz789",
"mpesa_code": "xyz789",
"delivery_code": "abc123",
"rider_submitted_otp": "xyz789",
"otp_expiry_time": "2007-12-03T10:15:30Z",
"location": ApplicationLocationInput,
"front_id": "abc123",
"back_id": "abc123",
"delivery_status": "abc123",
"notes": "xyz789"
}
ApplicationDocumentValidityGraphQL
Fields
| Field Name | Description |
|---|---|
document_id - String
|
Document ID |
status - ValidationDetailStatus
|
Validation status |
validated_at - DateTime
|
Validation timestamp |
validator_id - String
|
Validator ID |
mpesa_recent_airtime - String
|
M-Pesa recent airtime analysis |
mpesa_gaps_analysis - String
|
M-Pesa gaps analysis |
Example
{
"document_id": "abc123",
"status": "VALID",
"validated_at": "2007-12-03T10:15:30Z",
"validator_id": "abc123",
"mpesa_recent_airtime": "abc123",
"mpesa_gaps_analysis": "abc123"
}
ApplicationDocumentValidityInput
Example
{
"document_id": "xyz789",
"status": "abc123",
"validated_at": "2007-12-03T10:15:30Z",
"validator_id": "abc123",
"mpesa_recent_airtime": "abc123",
"mpesa_gaps_analysis": "xyz789"
}
ApplicationEmploymentFilterInput
Description
Filter by employment fields
Fields
| Input Field | Description |
|---|---|
status - StringFilterInput
|
|
title - StringFilterInput
|
|
location - StringFilterInput
|
|
duration - StringFilterInput
|
Example
{
"status": StringFilterInput,
"title": StringFilterInput,
"location": StringFilterInput,
"duration": StringFilterInput
}
ApplicationEmploymentGraphQL
ApplicationEmploymentInput
ApplicationEntityGraphQL
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
Unique application identifier |
customer_id - String
|
Customer ID associated with the application |
application_state - ApplicationState
|
Current state of the application |
credit_state - LoanApplicationStatus!
|
Current credit state |
prospect_stage - ProspectStage!
|
Current prospect stage |
application_channel - ApplicationChannelEnum!
|
Channel through which application was submitted |
kyc_documents - [String!]
|
List of KYC documents |
active_kyc_documents - ApplicationActiveKycDocumentsGraphQL
|
Active KYC documents |
customer - ApplicationCustomerGraphQL
|
Customer information |
next_of_kin - ApplicationNextOfKinGraphQL
|
Next of kin information |
previous_next_of_kin - ApplicationNextOfKinGraphQL
|
Previous next of kin information |
credit - ApplicationCreditGraphQL
|
Credit information |
risk - ApplicationRiskGraphQL
|
Risk information |
delivery - ApplicationDeliveryGraphQL
|
Delivery information |
legacy_references - ApplicationLegacyReferencesGraphQL
|
Legacy reference IDs from previous systems |
metadata - JSON
|
Application metadata |
timeline - ApplicationTimelineGraphQL
|
Application timeline |
references - ApplicationReferencesGraphQL
|
Reference IDs |
validation_references - ApplicationValidationReferencesGraphQL
|
Validation record reference IDs |
application_type - ApplicationType
|
Whether this is a first loan or a subsequent loan application |
normal_high_deposit - NormalHighDepositEnum
|
Whether this application uses a normal or high deposit |
activeValidationRecords - ApplicationActiveValidationReferencesGraphQL
|
Resolved validation records keyed by check type |
credit_call - ApplicationCreditCallGraphQL
|
Credit call details |
call_disposition_id - String
|
Call disposition ID reference |
submission_source - SubmissionSourceEnum
|
Channel through which the application was submitted |
leads_screens - LeadsScreensGraphQL
|
Completion status of each leads screen |
prospects_screens - ProspectsScreensGraphQL
|
Completion status of each prospects screen |
liveness_check - ApplicationLivenessCheckGraphQL
|
Liveness check details |
consent - ApplicationConsentGraphQL
|
Customer consent details |
staff - ApplicationStaffGraphQL
|
Staff members assigned to this application |
creditProduct - SellerCatalogObjectType
|
Seller catalog item for the credit product ID |
customerProduct - SellerCatalogObjectType
|
Seller catalog item for the customer product ID |
seller - SellerObjectType
|
Seller associated with this application |
salesAgent - AgentProfileObjectType
|
Sales agent profile associated with this application |
submittingAgent - AgentProfileObjectType
|
Submitting agent profile associated with this application |
sfmAgent - AgentProfileObjectType
|
SFM agent profile associated with this application |
active_resubmission - ApplicationResubmissionGraphQL
|
Current active (non-submitted) resubmission for this application |
createdAt - DateTime!
|
Application creation timestamp |
updatedAt - DateTime!
|
Application last update timestamp |
callDisposition - CallDispositionType
|
The call disposition associated with this application |
validation_records - [ValidationRecordGraphQLEntity!]
|
Validation records associated with this application |
active_validation_records - ApplicationActiveValidationReferencesGraphQL
|
Resolved validation records keyed by check type from validation_references |
creditCallDetails - ApplicationCallDetailsType
|
The call details record for the current credit call |
activeCreditPricePlan - PricingCalculationType
|
The active credit price plan for this application |
Example
{
"_id": "4",
"customer_id": "xyz789",
"application_state": "partial_lead",
"credit_state": "UNKNOWN",
"prospect_stage": "UNKNOWN",
"application_channel": "SALES_APP",
"kyc_documents": ["xyz789"],
"active_kyc_documents": ApplicationActiveKycDocumentsGraphQL,
"customer": ApplicationCustomerGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"previous_next_of_kin": ApplicationNextOfKinGraphQL,
"credit": ApplicationCreditGraphQL,
"risk": ApplicationRiskGraphQL,
"delivery": ApplicationDeliveryGraphQL,
"legacy_references": ApplicationLegacyReferencesGraphQL,
"metadata": {},
"timeline": ApplicationTimelineGraphQL,
"references": ApplicationReferencesGraphQL,
"validation_references": ApplicationValidationReferencesGraphQL,
"application_type": "FIRST_LOAN",
"normal_high_deposit": "NORMAL",
"activeValidationRecords": ApplicationActiveValidationReferencesGraphQL,
"credit_call": ApplicationCreditCallGraphQL,
"call_disposition_id": "xyz789",
"submission_source": "AGENT_DIRECT",
"leads_screens": LeadsScreensGraphQL,
"prospects_screens": ProspectsScreensGraphQL,
"liveness_check": ApplicationLivenessCheckGraphQL,
"consent": ApplicationConsentGraphQL,
"staff": ApplicationStaffGraphQL,
"creditProduct": SellerCatalogObjectType,
"customerProduct": SellerCatalogObjectType,
"seller": SellerObjectType,
"salesAgent": AgentProfileObjectType,
"submittingAgent": AgentProfileObjectType,
"sfmAgent": AgentProfileObjectType,
"active_resubmission": ApplicationResubmissionGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"callDisposition": CallDispositionType,
"validation_records": [ValidationRecordGraphQLEntity],
"active_validation_records": ApplicationActiveValidationReferencesGraphQL,
"creditCallDetails": ApplicationCallDetailsType,
"activeCreditPricePlan": PricingCalculationType
}
ApplicationEntityInput
Fields
| Input Field | Description |
|---|---|
application_id - String
|
Application ID |
customer_id - String
|
Customer ID associated with the application |
application_state - String
|
Current state of the application |
credit_state - String
|
Current credit state |
prospect_stage - ProspectStage
|
Current prospect stage |
application_channel - String
|
Channel through which application was submitted |
kyc_documents - [String!]
|
List of KYC documents |
active_kyc_documents - ApplicationActiveKycDocumentsInput
|
Active KYC documents |
customer - ApplicationCustomerInput
|
Customer information |
next_of_kin - ApplicationNextOfKinInput
|
Next of kin information |
previous_next_of_kin - ApplicationNextOfKinInput
|
Previous next of kin information |
credit - ApplicationCreditInput
|
Credit information |
risk - ApplicationRiskInput
|
Risk assessment |
delivery - ApplicationDeliveryInput
|
Delivery information |
liveness_check - ApplicationLivenessCheckInput
|
Liveness check information |
consent - ApplicationConsentInput
|
Consent information |
timeline - ApplicationTimelineInput
|
Application timeline |
staff - ApplicationStaffInput
|
Staff assignments |
references - ApplicationReferencesInput
|
Reference IDs |
legacy_references - ApplicationLegacyReferencesInput
|
Legacy reference IDs |
validation_references - ApplicationValidationReferencesInput
|
Validation reference IDs |
metadata - JSON
|
Additional metadata |
normal_high_deposit - NormalHighDepositEnum
|
Whether this application uses a normal or high deposit |
credit_call - ApplicationCreditCallInput
|
Credit call details |
Example
{
"application_id": "abc123",
"customer_id": "abc123",
"application_state": "xyz789",
"credit_state": "xyz789",
"prospect_stage": "UNKNOWN",
"application_channel": "xyz789",
"kyc_documents": ["abc123"],
"active_kyc_documents": ApplicationActiveKycDocumentsInput,
"customer": ApplicationCustomerInput,
"next_of_kin": ApplicationNextOfKinInput,
"previous_next_of_kin": ApplicationNextOfKinInput,
"credit": ApplicationCreditInput,
"risk": ApplicationRiskInput,
"delivery": ApplicationDeliveryInput,
"liveness_check": ApplicationLivenessCheckInput,
"consent": ApplicationConsentInput,
"timeline": ApplicationTimelineInput,
"staff": ApplicationStaffInput,
"references": ApplicationReferencesInput,
"legacy_references": ApplicationLegacyReferencesInput,
"validation_references": ApplicationValidationReferencesInput,
"metadata": {},
"normal_high_deposit": "NORMAL",
"credit_call": ApplicationCreditCallInput
}
ApplicationExemptionRecordFilterInput
Fields
| Input Field | Description |
|---|---|
exemption_type - StringFilterInput
|
|
applied_by - StringFilterInput
|
|
applied_by_name - StringFilterInput
|
|
applied_at - DateFilterInput
|
Example
{
"exemption_type": StringFilterInput,
"applied_by": StringFilterInput,
"applied_by_name": StringFilterInput,
"applied_at": DateFilterInput
}
ApplicationExemptionRecordGraphQL
Fields
| Field Name | Description |
|---|---|
exemption_type - ExemptionTypeEnum
|
|
justification - String
|
|
applied_by - String
|
|
applied_by_name - String
|
|
applied_at - DateTime
|
Example
{
"exemption_type": "TERMS_ACCEPTANCE",
"justification": "xyz789",
"applied_by": "xyz789",
"applied_by_name": "xyz789",
"applied_at": "2007-12-03T10:15:30Z"
}
ApplicationExemptionRecordInput
Fields
| Input Field | Description |
|---|---|
exemption_type - ExemptionTypeEnum
|
|
justification - String
|
|
applied_by - String
|
|
applied_by_name - String
|
|
applied_at - DateTime
|
Example
{
"exemption_type": "TERMS_ACCEPTANCE",
"justification": "xyz789",
"applied_by": "abc123",
"applied_by_name": "xyz789",
"applied_at": "2007-12-03T10:15:30Z"
}
ApplicationFilterInput
Description
Filter input for application queries
Fields
| Input Field | Description |
|---|---|
_id - StringFilterInput
|
Filter by application ID |
callDisposition - CallDispositionFilterInput
|
Filter by related call disposition fields |
application_state - ApplicationStateFilterInput
|
Filter by application state |
credit_state - LoanApplicationStatusFilterInput
|
Filter by credit state |
prospect_stage - ProspectStageFilterInput
|
Filter by prospect stage |
customer_id - StringFilterInput
|
Filter by customer ID |
application_channel - ApplicationChannelFilterInput
|
Filter by application channel |
customer - ApplicationCustomerFilterInput
|
Filter by customer fields |
credit - ApplicationCreditFilterInput
|
Filter by credit fields |
risk - ApplicationRiskFilterInput
|
Filter by risk fields |
staff - ApplicationStaffFilterInput
|
Filter by staff fields |
delivery - ApplicationDeliveryFilterInput
|
Filter by delivery fields |
references - ApplicationReferencesFilterInput
|
Filter by reference fields |
application_type - StringFilterInput
|
Filter by application type — accepts ApplicationType enum values (FIRST_LOAN, SUBSEQUENT_LOAN) |
normal_high_deposit - NormalHighDepositFilterInput
|
Filter by normal or high deposit application classification |
timeline - ApplicationTimelineFilterInput
|
Filter by timeline date fields |
createdAt - DateFilterInput
|
Filter by creation date |
updatedAt - DateFilterInput
|
Filter by last update date |
or - [ApplicationFilterInput!]
|
Logical OR — match documents satisfying any of the given filters |
and - [ApplicationFilterInput!]
|
Logical AND — match documents satisfying all of the given filters |
Example
{
"_id": StringFilterInput,
"callDisposition": CallDispositionFilterInput,
"application_state": ApplicationStateFilterInput,
"credit_state": LoanApplicationStatusFilterInput,
"prospect_stage": ProspectStageFilterInput,
"customer_id": StringFilterInput,
"application_channel": ApplicationChannelFilterInput,
"customer": ApplicationCustomerFilterInput,
"credit": ApplicationCreditFilterInput,
"risk": ApplicationRiskFilterInput,
"staff": ApplicationStaffFilterInput,
"delivery": ApplicationDeliveryFilterInput,
"references": ApplicationReferencesFilterInput,
"application_type": StringFilterInput,
"normal_high_deposit": NormalHighDepositFilterInput,
"timeline": ApplicationTimelineFilterInput,
"createdAt": DateFilterInput,
"updatedAt": DateFilterInput,
"or": [ApplicationFilterInput],
"and": [ApplicationFilterInput]
}
ApplicationIdentificationFilterInput
Description
Filter by identification fields
Fields
| Input Field | Description |
|---|---|
type - IdTypeFilterInput
|
|
number - StringFilterInput
|
Example
{
"type": IdTypeFilterInput,
"number": StringFilterInput
}
ApplicationIdentificationGraphQL
ApplicationIdentificationInput
ApplicationLegacyReferencesGraphQL
ApplicationLegacyReferencesInput
ApplicationLivenessCheckGraphQL
ApplicationLivenessCheckInput
ApplicationLocationFilterInput
Description
Filter by location fields
Fields
| Input Field | Description |
|---|---|
county - StringFilterInput
|
|
country - StringFilterInput
|
Example
{
"county": StringFilterInput,
"country": StringFilterInput
}
ApplicationLocationGraphQL
Example
{
"county": "xyz789",
"country": "xyz789",
"latitude": 123.45,
"longitude": 123.45,
"coordinates": [987.65],
"address": "abc123"
}
ApplicationLocationInput
Example
{
"county": "xyz789",
"country": "abc123",
"latitude": 123.45,
"longitude": 987.65,
"coordinates": [987.65],
"address": "abc123"
}
ApplicationNextOfKinGraphQL
Fields
| Field Name | Description |
|---|---|
first_name - String
|
First name of next of kin |
other_name - String
|
Other name(s) of next of kin |
relationship - String
|
Relationship to applicant |
identification - ApplicationIdentificationGraphQL
|
Identification details |
phone_primary - String
|
Primary phone number |
primary_on_whatsapp - Boolean
|
Whether primary phone is on WhatsApp |
phone_secondary - String
|
Secondary phone number |
full_name - String
|
Full name (computed field) |
Example
{
"first_name": "xyz789",
"other_name": "xyz789",
"relationship": "xyz789",
"identification": ApplicationIdentificationGraphQL,
"phone_primary": "abc123",
"primary_on_whatsapp": true,
"phone_secondary": "abc123",
"full_name": "xyz789"
}
ApplicationNextOfKinInput
Fields
| Input Field | Description |
|---|---|
first_name - String
|
First name of next of kin |
middle_name - String
|
Middle name of next of kin |
other_name - String
|
Last name of next of kin |
relationship - String
|
Relationship to applicant |
identification - ApplicationIdentificationInput
|
Identification details |
phone_primary - String
|
Primary phone number |
phone_secondary - String
|
Secondary phone number |
primary_on_whatsapp - Boolean
|
Whether primary phone is on whatsapp |
Example
{
"first_name": "xyz789",
"middle_name": "xyz789",
"other_name": "abc123",
"relationship": "abc123",
"identification": ApplicationIdentificationInput,
"phone_primary": "xyz789",
"phone_secondary": "xyz789",
"primary_on_whatsapp": false
}
ApplicationNokValidityGraphQL
Fields
| Field Name | Description |
|---|---|
status - ValidationDetailStatus
|
NOK validation status |
validatedAt - DateTime
|
NOK validation timestamp |
validatorId - String
|
NOK validator ID |
Example
{
"status": "VALID",
"validatedAt": "2007-12-03T10:15:30Z",
"validatorId": "abc123"
}
ApplicationNokValidityInput
ApplicationPersonalInfoFilterInput
Description
Filter by personal info fields
Fields
| Input Field | Description |
|---|---|
first_name - StringFilterInput
|
|
other_name - StringFilterInput
|
|
email - StringFilterInput
|
|
phone_primary - StringFilterInput
|
|
phone_secondary - StringFilterInput
|
|
kra_pin - StringFilterInput
|
Example
{
"first_name": StringFilterInput,
"other_name": StringFilterInput,
"email": StringFilterInput,
"phone_primary": StringFilterInput,
"phone_secondary": StringFilterInput,
"kra_pin": StringFilterInput
}
ApplicationPersonalInfoGraphQL
Fields
| Field Name | Description |
|---|---|
first_name - String
|
First name of the applicant |
other_name - String
|
Other name(s) of the applicant |
email - String
|
Email address of the applicant |
phone_primary - String
|
Primary phone number of the applicant |
phone_secondary - String
|
Secondary phone number of the applicant |
primary_on_whatsapp - Boolean
|
Whether primary phone is on WhatsApp |
kra_pin - String
|
KRA PIN |
full_name - String
|
Full name (computed field) |
Example
{
"first_name": "abc123",
"other_name": "xyz789",
"email": "abc123",
"phone_primary": "abc123",
"phone_secondary": "xyz789",
"primary_on_whatsapp": true,
"kra_pin": "xyz789",
"full_name": "abc123"
}
ApplicationPersonalInfoInput
Fields
| Input Field | Description |
|---|---|
first_name - String
|
First name of the applicant |
other_name - String
|
Other name(s) of the applicant |
email - String
|
Email address of the applicant |
phone_primary - String
|
Primary phone number of the applicant |
primary_on_whatsapp - Boolean
|
Whether primary phone is on whatsapp |
phone_secondary - String
|
Secondary phone number of the applicant |
kra_pin - String
|
KRA PIN |
Example
{
"first_name": "abc123",
"other_name": "abc123",
"email": "abc123",
"phone_primary": "xyz789",
"primary_on_whatsapp": false,
"phone_secondary": "abc123",
"kra_pin": "xyz789"
}
ApplicationProductFilterInput
Description
Filter by product fields
Fields
| Input Field | Description |
|---|---|
id - StringFilterInput
|
|
name - StringFilterInput
|
|
purchase_mode - PurchaseModeFilterInput
|
Example
{
"id": StringFilterInput,
"name": StringFilterInput,
"purchase_mode": PurchaseModeFilterInput
}
ApplicationProductGraphQL
Fields
| Field Name | Description |
|---|---|
id - String
|
Product ID |
name - String
|
Product name |
delivery_location - String
|
Delivery location |
purchase_mode - PurchaseMode
|
Purchase mode |
product_repayment_period - String
|
Product repayment period |
inventory_id - String
|
Inventory ID |
cash_price - Float
|
Cash price of the product |
price_plan_id - String
|
Price plan ID |
price_plan_code - String
|
Price plan code |
Example
{
"id": "abc123",
"name": "xyz789",
"delivery_location": "xyz789",
"purchase_mode": "CASH",
"product_repayment_period": "xyz789",
"inventory_id": "xyz789",
"cash_price": 987.65,
"price_plan_id": "xyz789",
"price_plan_code": "abc123"
}
ApplicationProductInput
Fields
| Input Field | Description |
|---|---|
id - String
|
Product ID |
name - String
|
Product name |
delivery_location - String
|
Delivery location |
purchase_mode - String
|
Purchase mode |
product_repayment_period - String
|
Product repayment period |
inventory_id - String
|
Inventory ID |
cash_price - Float
|
Cash price of the product |
price_plan_id - String
|
Price plan ID |
price_plan_code - String
|
Price plan code |
Example
{
"id": "abc123",
"name": "xyz789",
"delivery_location": "abc123",
"purchase_mode": "xyz789",
"product_repayment_period": "abc123",
"inventory_id": "abc123",
"cash_price": 123.45,
"price_plan_id": "xyz789",
"price_plan_code": "xyz789"
}
ApplicationReferencesFilterInput
Description
Filter by reference fields
Fields
| Input Field | Description |
|---|---|
lead_id - StringFilterInput
|
|
prospect_id - StringFilterInput
|
|
customer_id - StringFilterInput
|
|
fate_guide_id - StringFilterInput
|
|
final_fate_guide_id - StringFilterInput
|
|
order_id - StringFilterInput
|
Example
{
"lead_id": StringFilterInput,
"prospect_id": StringFilterInput,
"customer_id": StringFilterInput,
"fate_guide_id": StringFilterInput,
"final_fate_guide_id": StringFilterInput,
"order_id": StringFilterInput
}
ApplicationReferencesGraphQL
Fields
| Field Name | Description |
|---|---|
lead_id - String
|
Lead ID |
prospect_id - String
|
Prospect ID |
customer_id - String
|
Customer ID |
crb_transaction_id - String
|
CRB transaction ID |
resubmission_id - String
|
Resubmission ID |
fate_guide_id - String
|
Fate guide ID |
final_fate_guide_id - String
|
Final fate guide ID |
order_id - String
|
Fragile hint: order ID set after D&D order creation. Not a source of truth — always verify with findActiveByApplicationId. |
Example
{
"lead_id": "xyz789",
"prospect_id": "xyz789",
"customer_id": "xyz789",
"crb_transaction_id": "xyz789",
"resubmission_id": "abc123",
"fate_guide_id": "abc123",
"final_fate_guide_id": "xyz789",
"order_id": "abc123"
}
ApplicationReferencesInput
Fields
| Input Field | Description |
|---|---|
lead_id - String
|
Lead ID |
prospect_id - String
|
Prospect ID |
customer_id - String
|
Customer ID |
crb_transaction_id - String
|
CRB transaction ID |
resubmission_id - String
|
Resubmission ID |
fate_guide_id - String
|
Fate guide ID |
final_fate_guide_id - String
|
Final fate guide ID |
order_id - String
|
Fragile hint: order ID to use when creating the loan sale. Not a source of truth — always verify with findActiveByApplicationId. |
Example
{
"lead_id": "abc123",
"prospect_id": "xyz789",
"customer_id": "xyz789",
"crb_transaction_id": "abc123",
"resubmission_id": "xyz789",
"fate_guide_id": "xyz789",
"final_fate_guide_id": "abc123",
"order_id": "xyz789"
}
ApplicationResubmissionGraphQL
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
prospect_id - ID
|
|
lead_id - ID
|
|
application_id - ID
|
|
changes - ResubmissionChangesGraphQL
|
|
journey - ResubmissionJourneyType!
|
|
status - ResubmissionStatusEnum!
|
|
submitted_by - String
|
|
validations_to_run - [String!]
|
|
valid_data - ResubmissionValidDataGraphQL
|
|
next_of_kin - ApplicationNextOfKinGraphQL
|
|
validations - ApplicationActiveValidationReferencesGraphQL
|
|
full_name - String
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
Example
{
"_id": 4,
"prospect_id": "4",
"lead_id": 4,
"application_id": "4",
"changes": ResubmissionChangesGraphQL,
"journey": "CREDIT",
"status": "PENDING",
"submitted_by": "abc123",
"validations_to_run": ["xyz789"],
"valid_data": ResubmissionValidDataGraphQL,
"next_of_kin": ApplicationNextOfKinGraphQL,
"validations": ApplicationActiveValidationReferencesGraphQL,
"full_name": "xyz789",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
ApplicationRiskFilterInput
Description
Filter by risk fields
Fields
| Input Field | Description |
|---|---|
risk_flag - StringFilterInput
|
|
previous_loans - StringFilterInput
|
|
high_deposit_overide - StringFilterInput
|
Example
{
"risk_flag": StringFilterInput,
"previous_loans": StringFilterInput,
"high_deposit_overide": StringFilterInput
}
ApplicationRiskGraphQL
ApplicationRiskInput
ApplicationSalesAgentFilterInput
Description
Filter by sales agent fields
Fields
| Input Field | Description |
|---|---|
id - StringFilterInput
|
|
dsr_id - StringFilterInput
|
Example
{
"id": StringFilterInput,
"dsr_id": StringFilterInput
}
ApplicationSalesAgentGraphQL
ApplicationSalesAgentInput
ApplicationStaffFilterInput
Description
Filter by staff fields
Fields
| Input Field | Description |
|---|---|
scorer - ApplicationStaffMemberFilterInput
|
|
caller - ApplicationStaffMemberFilterInput
|
|
decisioner - ApplicationStaffMemberFilterInput
|
|
sales_agent - ApplicationSalesAgentFilterInput
|
|
submitting_agent - ApplicationSalesAgentFilterInput
|
|
seller - ApplicationSalesAgentFilterInput
|
|
screener - ApplicationSalesAgentFilterInput
|
|
sfm - ApplicationSalesAgentFilterInput
|
Example
{
"scorer": ApplicationStaffMemberFilterInput,
"caller": ApplicationStaffMemberFilterInput,
"decisioner": ApplicationStaffMemberFilterInput,
"sales_agent": ApplicationSalesAgentFilterInput,
"submitting_agent": ApplicationSalesAgentFilterInput,
"seller": ApplicationSalesAgentFilterInput,
"screener": ApplicationSalesAgentFilterInput,
"sfm": ApplicationSalesAgentFilterInput
}
ApplicationStaffGraphQL
Fields
| Field Name | Description |
|---|---|
scorer - ApplicationStaffMemberGraphQL
|
|
caller - ApplicationStaffMemberGraphQL
|
|
decisioner - ApplicationStaffMemberGraphQL
|
|
sales_agent - ApplicationSalesAgentGraphQL
|
|
submitting_agent - ApplicationSalesAgentGraphQL
|
|
screener - ApplicationSalesAgentGraphQL
|
|
seller - ApplicationSalesAgentGraphQL
|
|
sfm - ApplicationSalesAgentGraphQL
|
Example
{
"scorer": ApplicationStaffMemberGraphQL,
"caller": ApplicationStaffMemberGraphQL,
"decisioner": ApplicationStaffMemberGraphQL,
"sales_agent": ApplicationSalesAgentGraphQL,
"submitting_agent": ApplicationSalesAgentGraphQL,
"screener": ApplicationSalesAgentGraphQL,
"seller": ApplicationSalesAgentGraphQL,
"sfm": ApplicationSalesAgentGraphQL
}
ApplicationStaffInput
Fields
| Input Field | Description |
|---|---|
scorer - ApplicationStaffMemberInput
|
Scorer details |
caller - ApplicationStaffMemberInput
|
Caller details |
decisioner - ApplicationStaffMemberInput
|
Decision maker details |
sales_agent - ApplicationSalesAgentInput
|
Sales agent details |
submitting_agent - ApplicationSalesAgentInput
|
Submitting agent details |
seller - ApplicationSalesAgentInput
|
Submitting agent details |
sfm - ApplicationSalesAgentInput
|
SFM staff member details |
Example
{
"scorer": ApplicationStaffMemberInput,
"caller": ApplicationStaffMemberInput,
"decisioner": ApplicationStaffMemberInput,
"sales_agent": ApplicationSalesAgentInput,
"submitting_agent": ApplicationSalesAgentInput,
"seller": ApplicationSalesAgentInput,
"sfm": ApplicationSalesAgentInput
}
ApplicationStaffMemberFilterInput
Description
Filter by staff member fields
Fields
| Input Field | Description |
|---|---|
id - StringFilterInput
|
|
name - StringFilterInput
|
Example
{
"id": StringFilterInput,
"name": StringFilterInput
}
ApplicationStaffMemberGraphQL
ApplicationStaffMemberInput
ApplicationState
Description
Lifecycle state of the application
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"partial_lead"
ApplicationStateFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ApplicationState
|
|
ne - ApplicationState
|
|
in - [ApplicationState!]
|
|
notIn - [ApplicationState!]
|
Example
{
"eq": "partial_lead",
"ne": "partial_lead",
"in": ["partial_lead"],
"notIn": ["partial_lead"]
}
ApplicationTimelineFilterInput
Description
Filter by timeline date fields
Fields
| Input Field | Description |
|---|---|
lead_created - DateFilterInput
|
|
lead_updated - DateFilterInput
|
|
prospect_created - DateFilterInput
|
|
prospect_updated - DateFilterInput
|
|
customer_created - DateFilterInput
|
|
ready_for_scoring - DateFilterInput
|
|
ready_for_calling - DateFilterInput
|
|
ready_for_decision - DateFilterInput
|
|
called_at - DateFilterInput
|
|
scored_at - DateFilterInput
|
|
decisioned_at - DateFilterInput
|
|
ready_for_screening - DateFilterInput
|
|
screened_at - DateFilterInput
|
|
prospect_submitted_at - DateFilterInput
|
|
resubmission_submitted_at - DateFilterInput
|
When agent last committed resubmission corrections |
liveness_created_date - DateFilterInput
|
|
paused_financial_statement_at - DateFilterInput
|
|
scoring_started_at - DateFilterInput
|
|
first_scored_at - DateFilterInput
|
|
calling_started_at - DateFilterInput
|
|
first_called_at - DateFilterInput
|
|
decision_started_at - DateFilterInput
|
|
first_decisioned_at - DateFilterInput
|
|
last_modified_credit_status_at - DateFilterInput
|
Example
{
"lead_created": DateFilterInput,
"lead_updated": DateFilterInput,
"prospect_created": DateFilterInput,
"prospect_updated": DateFilterInput,
"customer_created": DateFilterInput,
"ready_for_scoring": DateFilterInput,
"ready_for_calling": DateFilterInput,
"ready_for_decision": DateFilterInput,
"called_at": DateFilterInput,
"scored_at": DateFilterInput,
"decisioned_at": DateFilterInput,
"ready_for_screening": DateFilterInput,
"screened_at": DateFilterInput,
"prospect_submitted_at": DateFilterInput,
"resubmission_submitted_at": DateFilterInput,
"liveness_created_date": DateFilterInput,
"paused_financial_statement_at": DateFilterInput,
"scoring_started_at": DateFilterInput,
"first_scored_at": DateFilterInput,
"calling_started_at": DateFilterInput,
"first_called_at": DateFilterInput,
"decision_started_at": DateFilterInput,
"first_decisioned_at": DateFilterInput,
"last_modified_credit_status_at": DateFilterInput
}
ApplicationTimelineGraphQL
Fields
| Field Name | Description |
|---|---|
lead_created - DateTime
|
Lead creation timestamp |
lead_updated - DateTime
|
Lead update timestamp |
prospect_created - DateTime
|
Prospect creation timestamp |
prospect_updated - DateTime
|
Prospect update timestamp |
customer_created - DateTime
|
Customer creation timestamp |
ready_for_scoring - DateTime
|
Ready for scoring timestamp |
ready_for_calling - DateTime
|
Ready for calling timestamp |
ready_for_decision - DateTime
|
Ready for decision timestamp |
called_at - DateTime
|
Called timestamp |
scored_at - DateTime
|
Scored timestamp |
decisioned_at - DateTime
|
Decision timestamp |
device_needed - DateTime
|
Device needed timestamp |
liveness_created_date - DateTime
|
Liveness creation timestamp |
ready_for_screening - DateTime
|
Ready for screening timestamp |
screened_at - DateTime
|
Screened timestamp |
paused_financial_statement_at - DateTime
|
Paused financial statement timestamp |
prospect_submitted_at - DateTime
|
Prospect submitted to credit pipeline timestamp |
resubmission_submitted_at - DateTime
|
When agent last committed resubmission corrections |
scoring_started_at - DateTime
|
When scoring agent started working |
first_scored_at - DateTime
|
First time scoring was completed |
calling_started_at - DateTime
|
When calling agent started working |
first_called_at - DateTime
|
First time calling was completed |
decision_started_at - DateTime
|
When decision agent started working |
first_decisioned_at - DateTime
|
First time decisioning was completed |
last_modified_credit_status_at - DateTime
|
Last time credit.credit status was modified |
Example
{
"lead_created": "2007-12-03T10:15:30Z",
"lead_updated": "2007-12-03T10:15:30Z",
"prospect_created": "2007-12-03T10:15:30Z",
"prospect_updated": "2007-12-03T10:15:30Z",
"customer_created": "2007-12-03T10:15:30Z",
"ready_for_scoring": "2007-12-03T10:15:30Z",
"ready_for_calling": "2007-12-03T10:15:30Z",
"ready_for_decision": "2007-12-03T10:15:30Z",
"called_at": "2007-12-03T10:15:30Z",
"scored_at": "2007-12-03T10:15:30Z",
"decisioned_at": "2007-12-03T10:15:30Z",
"device_needed": "2007-12-03T10:15:30Z",
"liveness_created_date": "2007-12-03T10:15:30Z",
"ready_for_screening": "2007-12-03T10:15:30Z",
"screened_at": "2007-12-03T10:15:30Z",
"paused_financial_statement_at": "2007-12-03T10:15:30Z",
"prospect_submitted_at": "2007-12-03T10:15:30Z",
"resubmission_submitted_at": "2007-12-03T10:15:30Z",
"scoring_started_at": "2007-12-03T10:15:30Z",
"first_scored_at": "2007-12-03T10:15:30Z",
"calling_started_at": "2007-12-03T10:15:30Z",
"first_called_at": "2007-12-03T10:15:30Z",
"decision_started_at": "2007-12-03T10:15:30Z",
"first_decisioned_at": "2007-12-03T10:15:30Z",
"last_modified_credit_status_at": "2007-12-03T10:15:30Z"
}
ApplicationTimelineInput
Fields
| Input Field | Description |
|---|---|
lead_created - DateTime
|
Lead creation timestamp |
lead_updated - DateTime
|
Lead update timestamp |
prospect_created - DateTime
|
Prospect creation timestamp |
prospect_updated - DateTime
|
Prospect update timestamp |
customer_created - DateTime
|
Customer creation timestamp |
ready_for_scoring - DateTime
|
Ready for scoring timestamp |
ready_for_calling - DateTime
|
Ready for calling timestamp |
ready_for_decision - DateTime
|
Ready for decision timestamp |
called_at - DateTime
|
Called timestamp |
scored_at - DateTime
|
Scored timestamp |
decisioned_at - DateTime
|
Decision timestamp |
device_needed - DateTime
|
Device needed timestamp |
liveness_created_date - DateTime
|
Liveness creation timestamp |
paused_financial_statement_at - DateTime
|
Paused financial statement timestamp |
prospect_submitted_at - DateTime
|
Prospect submitted to credit pipeline timestamp |
resubmission_submitted_at - DateTime
|
When agent last committed resubmission corrections |
scoring_started_at - DateTime
|
When scoring agent started working |
first_scored_at - DateTime
|
First time scoring was completed |
calling_started_at - DateTime
|
When calling agent started working |
first_called_at - DateTime
|
First time calling was completed |
decision_started_at - DateTime
|
When decision agent started working |
first_decisioned_at - DateTime
|
First time decisioning was completed |
last_modified_credit_status_at - DateTime
|
Last time credit.credit status was modified |
Example
{
"lead_created": "2007-12-03T10:15:30Z",
"lead_updated": "2007-12-03T10:15:30Z",
"prospect_created": "2007-12-03T10:15:30Z",
"prospect_updated": "2007-12-03T10:15:30Z",
"customer_created": "2007-12-03T10:15:30Z",
"ready_for_scoring": "2007-12-03T10:15:30Z",
"ready_for_calling": "2007-12-03T10:15:30Z",
"ready_for_decision": "2007-12-03T10:15:30Z",
"called_at": "2007-12-03T10:15:30Z",
"scored_at": "2007-12-03T10:15:30Z",
"decisioned_at": "2007-12-03T10:15:30Z",
"device_needed": "2007-12-03T10:15:30Z",
"liveness_created_date": "2007-12-03T10:15:30Z",
"paused_financial_statement_at": "2007-12-03T10:15:30Z",
"prospect_submitted_at": "2007-12-03T10:15:30Z",
"resubmission_submitted_at": "2007-12-03T10:15:30Z",
"scoring_started_at": "2007-12-03T10:15:30Z",
"first_scored_at": "2007-12-03T10:15:30Z",
"calling_started_at": "2007-12-03T10:15:30Z",
"first_called_at": "2007-12-03T10:15:30Z",
"decision_started_at": "2007-12-03T10:15:30Z",
"first_decisioned_at": "2007-12-03T10:15:30Z",
"last_modified_credit_status_at": "2007-12-03T10:15:30Z"
}
ApplicationType
Description
Whether this is a first loan or a subsequent loan application
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"FIRST_LOAN"
ApplicationUpdatePayload
Description
Application update payload for subscriptions
Example
{
"applicationId": "4",
"applicationState": "abc123",
"creditState": "xyz789",
"prospectStage": "abc123",
"changes": {},
"timestamp": "2007-12-03T10:15:30Z"
}
ApplicationValidationReferencesGraphQL
Fields
| Field Name | Description |
|---|---|
customer_iprs - String
|
Customer IPRS validation record ID |
customer_kra - String
|
Customer KRA validation record ID |
customer_mpesa - String
|
Customer MPESA validation record ID |
customer_duplicate - String
|
Customer duplicate validation record ID |
nok_iprs - String
|
NOK IPRS validation record ID |
nok_mpesa - String
|
NOK MPESA validation record ID |
nok_duplicate - String
|
NOK duplicate validation record ID |
risk - String
|
Risk validation record ID |
mpesa_statement - String
|
MPESA statement validation record ID |
liveness - String
|
Liveness validation record ID |
pre_screening - String
|
Pre screening validation record ID |
Example
{
"customer_iprs": "xyz789",
"customer_kra": "xyz789",
"customer_mpesa": "abc123",
"customer_duplicate": "xyz789",
"nok_iprs": "abc123",
"nok_mpesa": "xyz789",
"nok_duplicate": "xyz789",
"risk": "xyz789",
"mpesa_statement": "xyz789",
"liveness": "xyz789",
"pre_screening": "abc123"
}
ApplicationValidationReferencesInput
Fields
| Input Field | Description |
|---|---|
customer_iprs - String
|
Customer IPRS validation reference |
customer_kra - String
|
Customer KRA validation reference |
customer_mpesa - String
|
Customer M-Pesa validation reference |
customer_duplicate - String
|
Customer duplicate check reference |
nok_iprs - String
|
NOK IPRS validation reference |
nok_mpesa - String
|
NOK M-Pesa validation reference |
nok_duplicate - String
|
NOK duplicate check reference |
risk - String
|
Risk validation reference |
mpesa_statement - String
|
M-Pesa statement validation reference |
liveness - String
|
Liveness check reference |
Example
{
"customer_iprs": "xyz789",
"customer_kra": "abc123",
"customer_mpesa": "xyz789",
"customer_duplicate": "abc123",
"nok_iprs": "xyz789",
"nok_mpesa": "xyz789",
"nok_duplicate": "abc123",
"risk": "xyz789",
"mpesa_statement": "abc123",
"liveness": "xyz789"
}
ApplicationValidityGraphQL
Fields
| Field Name | Description |
|---|---|
mpesa_statement - ApplicationDocumentValidityGraphQL
|
M-Pesa statement validity |
bank_statement - ApplicationDocumentValidityGraphQL
|
Bank statement validity |
front_id - ApplicationDocumentValidityGraphQL
|
Front ID validity |
back_id - ApplicationDocumentValidityGraphQL
|
Back ID validity |
selfie - ApplicationDocumentValidityGraphQL
|
Selfie validity |
kra - ApplicationDocumentValidityGraphQL
|
KRA validity |
nok - ApplicationNokValidityGraphQL
|
NOK validity |
Example
{
"mpesa_statement": ApplicationDocumentValidityGraphQL,
"bank_statement": ApplicationDocumentValidityGraphQL,
"front_id": ApplicationDocumentValidityGraphQL,
"back_id": ApplicationDocumentValidityGraphQL,
"selfie": ApplicationDocumentValidityGraphQL,
"kra": ApplicationDocumentValidityGraphQL,
"nok": ApplicationNokValidityGraphQL
}
ApplicationValidityInput
Fields
| Input Field | Description |
|---|---|
mpesa_statement - ApplicationDocumentValidityInput
|
M-Pesa statement validity |
bank_statement - ApplicationDocumentValidityInput
|
Bank statement validity |
front_id - ApplicationDocumentValidityInput
|
Front ID validity |
back_id - ApplicationDocumentValidityInput
|
Back ID validity |
selfie - ApplicationDocumentValidityInput
|
Selfie validity |
kra - ApplicationDocumentValidityInput
|
KRA validity |
nok - ApplicationNokValidityInput
|
Next of kin validity |
Example
{
"mpesa_statement": ApplicationDocumentValidityInput,
"bank_statement": ApplicationDocumentValidityInput,
"front_id": ApplicationDocumentValidityInput,
"back_id": ApplicationDocumentValidityInput,
"selfie": ApplicationDocumentValidityInput,
"kra": ApplicationDocumentValidityInput,
"nok": ApplicationNokValidityInput
}
ApplicationsNamespace
Fields
| Field Name | Description |
|---|---|
resubmissionEligibility - ResubmissionJourneyGraphQL!
|
Check whether an application is eligible for resubmission and the journey type |
Arguments
|
|
resubmissionForm - ResubmissionFormSchemaGraphQL
|
Get the dynamic resubmission form schema for an application |
Arguments
|
|
resubmissionOverview - ResubmissionOverviewType!
|
Lightweight overview of resubmission eligibility and available sections — no upload URLs generated. |
Arguments
|
|
resubmission - ApplicationResubmissionGraphQL!
|
Get a resubmission record by ID |
Arguments
|
|
submitResubmission - ApplicationResubmissionGraphQL!
|
Submit resubmission data for an application |
updateResubmission - ApplicationResubmissionGraphQL!
|
Update an in-progress resubmission with new data |
commitResubmission - ApplicationResubmissionGraphQL!
|
Commit a resubmission, triggering the finalisation process |
Arguments
|
|
transferProspectForResubmission - String
|
Transfer a prospect to another agent for resubmission, returns the application ID |
Example
{
"resubmissionEligibility": ResubmissionJourneyGraphQL,
"resubmissionForm": ResubmissionFormSchemaGraphQL,
"resubmissionOverview": ResubmissionOverviewType,
"resubmission": ApplicationResubmissionGraphQL,
"submitResubmission": ApplicationResubmissionGraphQL,
"updateResubmission": ApplicationResubmissionGraphQL,
"commitResubmission": ApplicationResubmissionGraphQL,
"transferProspectForResubmission": "xyz789"
}
CustomerBucket
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CU1"
CustomerGenderEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"MALE"
CustomerModuleNamespace
Fields
| Field Name | Description |
|---|---|
credit - CreditNamespace!
|
|
subsequentLoan - SubsequentLoanNamespace!
|
|
risk - RiskNamespace!
|
|
applications - ApplicationsNamespace!
|
|
onboardingChecks - OnboardingChecksNamespace!
|
|
onboardingSupport - OnboardingSupportNamespace!
|
|
selfUnlockDevice - CustomerSelfUnlockResultType
|
|
Arguments
|
|
gracePeriodEligibility - GracePeriodEligibilityResultType
|
|
Arguments
|
|
requestGracePeriod - GracePeriodAwardResultType
|
|
Arguments
|
|
grantGracePeriodOverride - GracePeriodAwardResultType
|
|
Arguments
|
|
revokeGracePeriod - GracePeriodRevocationResultType
|
|
Arguments
|
|
Example
{
"credit": CreditNamespace,
"subsequentLoan": SubsequentLoanNamespace,
"risk": RiskNamespace,
"applications": ApplicationsNamespace,
"onboardingChecks": OnboardingChecksNamespace,
"onboardingSupport": OnboardingSupportNamespace,
"selfUnlockDevice": CustomerSelfUnlockResultType,
"gracePeriodEligibility": GracePeriodEligibilityResultType,
"requestGracePeriod": GracePeriodAwardResultType,
"grantGracePeriodOverride": GracePeriodAwardResultType,
"revokeGracePeriod": GracePeriodRevocationResultType
}
CustomerReferralDto
Fields
| Field Name | Description |
|---|---|
referral_id - ID!
|
|
referrer_customer_id - ID!
|
|
referee_customer_id - ID!
|
|
referee_customer - RawCustomersDto
|
|
referral_code_used - String!
|
|
referral_status - ReferralStatusEnum!
|
|
validation_due_date - DateTime
|
|
validated_at - DateTime
|
|
rewards_processed_at - DateTime
|
|
referee_loan_contract_id - String
|
|
referee_opening_date - DateTime
|
|
payment_adjustment_id - String
|
|
referrer_airtime_transaction_id - String
|
|
referee_airtime_transaction_id - String
|
|
created_by - String
|
|
created_at - DateTime!
|
|
updated_by - String
|
|
updated_at - DateTime
|
Example
{
"referral_id": 4,
"referrer_customer_id": "4",
"referee_customer_id": 4,
"referee_customer": RawCustomersDto,
"referral_code_used": "xyz789",
"referral_status": "INCOMPLETE",
"validation_due_date": "2007-12-03T10:15:30Z",
"validated_at": "2007-12-03T10:15:30Z",
"rewards_processed_at": "2007-12-03T10:15:30Z",
"referee_loan_contract_id": "abc123",
"referee_opening_date": "2007-12-03T10:15:30Z",
"payment_adjustment_id": "abc123",
"referrer_airtime_transaction_id": "abc123",
"referee_airtime_transaction_id": "abc123",
"created_by": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_by": "xyz789",
"updated_at": "2007-12-03T10:15:30Z"
}
CustomerReferralFilterInput
Fields
| Input Field | Description |
|---|---|
referral_id - ID
|
|
referrer_customer_id - ID
|
|
referee_customer_id - ID
|
|
referral_code - String
|
|
referral_status - ReferralStatusEnum
|
|
reward_status - ReferralRewardStatusEnum
|
|
created_by - String
|
|
created_at - DateTime
|
|
updated_at - DateTime
|
Example
{
"referral_id": "4",
"referrer_customer_id": 4,
"referee_customer_id": 4,
"referral_code": "xyz789",
"referral_status": "INCOMPLETE",
"reward_status": "PENDING",
"created_by": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
CustomerSelfUnlockContractResultType
Example
{
"contract_id": 4,
"sale_id": 4,
"inventory_id": "4",
"status": "xyz789",
"reason": "xyz789",
"command_id": 4,
"next_lock_date": "2007-12-03T10:15:30Z"
}
CustomerSelfUnlockInput
Fields
| Input Field | Description |
|---|---|
customer_id - ID!
|
Customer UUID requesting self unlock |
Example
{"customer_id": "4"}
CustomerSelfUnlockResultType
Example
{
"success": true,
"customer_id": "4",
"total_contracts": 123,
"eligible_contracts": 123,
"queued_unlocks": 123,
"skipped_contracts": 123,
"results": [CustomerSelfUnlockContractResultType]
}
CustomerStatusEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ACTIVE"
CustomerTypeEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"INDIVIDUAL"
CustomerWalletsFilterInput
Fields
| Input Field | Description |
|---|---|
customer_wallet_id - String
|
Unique customer wallet identifier (auto-generated if not provided) |
customer_id - String!
|
Customer ID this wallet belongs to |
customer_wallet_available_balance - Float
|
Unallocated funds available in wallet |
customer_wallet_total_payments - Float
|
All payments received |
customer_wallet_total_adjustments - Float
|
Refunds, bonuses, penalties |
customer_wallet_total_days_given - Float
|
Grace days granted to customer |
customer_wallet_total_points - Float
|
Loyalty/reward points earned |
customer_wallet_total_allocated - Float
|
Money allocated to sales |
customer_wallet_lifetime_credits - Float
|
All money in (lifetime credits) |
customer_wallet_lifetime_debits - Float
|
All money out (lifetime debits) |
customer_wallet_currency - CurrencyEnum
|
Wallet currency |
Example
{
"customer_wallet_id": "xyz789",
"customer_id": "xyz789",
"customer_wallet_available_balance": 987.65,
"customer_wallet_total_payments": 987.65,
"customer_wallet_total_adjustments": 123.45,
"customer_wallet_total_days_given": 123.45,
"customer_wallet_total_points": 123.45,
"customer_wallet_total_allocated": 123.45,
"customer_wallet_lifetime_credits": 123.45,
"customer_wallet_lifetime_debits": 987.65,
"customer_wallet_currency": "KES"
}
KycDocumentType
Example
{
"_id": 4,
"domain": "xyz789",
"target": "abc123",
"target_id": "abc123",
"type": "xyz789",
"name": "abc123",
"url": "abc123",
"content_type": "xyz789",
"storage_provider": "abc123",
"created_at": "2007-12-03T10:15:30Z"
}
KycDocumentsDto
Fields
| Field Name | Description |
|---|---|
selfie_url - String
|
Selfie image URL |
id_front_url - String
|
ID front image URL |
id_back_url - String
|
ID back image URL |
certificate_of_incorporation_url - String
|
Certificate of incorporation URL |
tax_certificate_url - String
|
Tax certificate URL |
business_permit_url - String
|
Business permit URL |
associated_phone_numbers - [String!]
|
Associated phone numbers |
Example
{
"selfie_url": "abc123",
"id_front_url": "xyz789",
"id_back_url": "abc123",
"certificate_of_incorporation_url": "xyz789",
"tax_certificate_url": "abc123",
"business_permit_url": "xyz789",
"associated_phone_numbers": ["abc123"]
}
KycDocumentsInput
Example
{
"selfie_url": "xyz789",
"id_front_url": "xyz789",
"id_back_url": "abc123",
"certificate_of_incorporation_url": "xyz789",
"tax_certificate_url": "xyz789",
"business_permit_url": "abc123",
"associated_phone_numbers": ["xyz789"]
}
NextOfKinDto
Example
{
"first_name": "abc123",
"other_name": "abc123",
"relationship": "abc123",
"id_type": "abc123",
"id_number": "xyz789",
"phone_primary": "abc123",
"phone_secondary": "xyz789",
"primary_on_whatsapp": false
}
NextOfKinInput
Example
{
"first_name": "xyz789",
"other_name": "abc123",
"relationship": "xyz789",
"id_type": "abc123",
"id_number": "xyz789",
"phone_primary": "xyz789",
"phone_secondary": "xyz789",
"primary_on_whatsapp": true
}
OnboardingAvailableDevicesInput
Fields
| Input Field | Description |
|---|---|
applicationId - ID
|
|
fateGuideId - ID
|
|
sellerId - ID
|
|
showTopProductsOnly - Boolean
|
|
page - Int
|
|
limit - Int
|
|
brand - String
|
|
model - String
|
|
product_id - String
|
|
name - String
|
|
search - String
|
Search products by product name, brand, model, slug, SKU name, or SKU code |
excludeOutOfStock - Boolean
|
Example
{
"applicationId": 4,
"fateGuideId": 4,
"sellerId": 4,
"showTopProductsOnly": true,
"page": 987,
"limit": 987,
"brand": "abc123",
"model": "abc123",
"product_id": "abc123",
"name": "xyz789",
"search": "abc123",
"excludeOutOfStock": false
}
OnboardingAvailableDevicesResponse
Fields
| Field Name | Description |
|---|---|
message - String!
|
|
data - AvailableDevicesResultGraphQL!
|
Example
{
"message": "xyz789",
"data": AvailableDevicesResultGraphQL
}
OnboardingCheckResponse
OnboardingChecksNamespace
Fields
| Field Name | Description |
|---|---|
runFullValidationCheck - OnboardingCheckResponse!
|
Run full validation check based on purchase method (CASH/LOAN) |
Arguments
|
|
runIprsCheck - OnboardingCheckResponse!
|
Run IPRS validation check for customer or NOK |
Arguments
|
|
runMpesaCheck - OnboardingCheckResponse!
|
Run M-Pesa validation check for customer or NOK |
Arguments
|
|
runDuplicateCheck - OnboardingCheckResponse!
|
Run duplicate check for customer or NOK |
Arguments
|
|
runCrbCheck - OnboardingCheckResponse!
|
Run CRB validation check |
Arguments
|
|
runKraCheck - OnboardingCheckResponse!
|
Run KRA validation check |
Arguments
|
|
runFateGuideCheck - OnboardingCheckResponse!
|
Generate a fate guide score (PRELIMINARY or FINAL) |
Arguments
|
|
runRiskCheck - OnboardingCheckResponse!
|
Run risk model check for an application |
Arguments
|
|
runPrescreeningCheck - OnboardingCheckResponse!
|
Run prescreening check for an application |
Arguments
|
|
runPrescreenFlow - OnboardingCheckResponse!
|
Run prescreen flow (CRB → prescreening) for an application |
Arguments
|
|
runNokCheckFlow - OnboardingCheckResponse!
|
Run next-of-kin check flow (duplicate → IPRS → M-Pesa) |
Arguments
|
|
runResubmissionIprsCheck - OnboardingCheckResponse!
|
Run IPRS check for a resubmission (CUSTOMER or NOK) |
Arguments
|
|
runResubmissionMpesaCheck - OnboardingCheckResponse!
|
Run customer M-Pesa check for a resubmission |
Arguments
|
|
runResubmissionNokMpesaCheck - OnboardingCheckResponse!
|
Run NOK M-Pesa check for a resubmission |
Arguments
|
|
runResubmissionKraCheck - OnboardingCheckResponse!
|
Run KRA check for a resubmission |
Arguments
|
|
runResubmissionRiskCheck - OnboardingCheckResponse!
|
Run risk check for a resubmission |
Arguments
|
|
resendDuplicateOtp - ApplicationEntityGraphQL!
|
Resend the OTP generated during a duplicate check block for an application |
Arguments
|
|
verifyDuplicateOtp - ApplicationEntityGraphQL!
|
Verify the OTP submitted by a customer to clear a duplicate check block on an application |
Arguments
|
|
previewDuplicateCheck - DuplicatePreviewCheckResult!
|
Preview duplicate check results for an application or individual fields without creating a validation record |
Arguments
|
|
Example
{
"runFullValidationCheck": OnboardingCheckResponse,
"runIprsCheck": OnboardingCheckResponse,
"runMpesaCheck": OnboardingCheckResponse,
"runDuplicateCheck": OnboardingCheckResponse,
"runCrbCheck": OnboardingCheckResponse,
"runKraCheck": OnboardingCheckResponse,
"runFateGuideCheck": OnboardingCheckResponse,
"runRiskCheck": OnboardingCheckResponse,
"runPrescreeningCheck": OnboardingCheckResponse,
"runPrescreenFlow": OnboardingCheckResponse,
"runNokCheckFlow": OnboardingCheckResponse,
"runResubmissionIprsCheck": OnboardingCheckResponse,
"runResubmissionMpesaCheck": OnboardingCheckResponse,
"runResubmissionNokMpesaCheck": OnboardingCheckResponse,
"runResubmissionKraCheck": OnboardingCheckResponse,
"runResubmissionRiskCheck": OnboardingCheckResponse,
"resendDuplicateOtp": ApplicationEntityGraphQL,
"verifyDuplicateOtp": ApplicationEntityGraphQL,
"previewDuplicateCheck": DuplicatePreviewCheckResult
}
OnboardingFateGuideCalculationResponse
Fields
| Field Name | Description |
|---|---|
message - String!
|
|
data - FateGuideScoresType!
|
Example
{
"message": "xyz789",
"data": FateGuideScoresType
}
OnboardingFateGuideSource
Description
Source of the fate guide calculation request
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"PRESCREENING"
OnboardingPaginationMetadataType
OnboardingProductFilterType
Fields
| Field Name | Description |
|---|---|
priceRestrictions - PriceRestrictionType
|
Example
{"priceRestrictions": PriceRestrictionType}
OnboardingSupportNamespace
Fields
| Field Name | Description |
|---|---|
rerunRoundRobin - RoundRobinRerunResultType!
|
Rerun round-robin assignment for MAIN_WEBSITE leads stuck on company sales (both sales_agent and submitting_agent dsr_id = "001_Mophones") |
Example
{"rerunRoundRobin": RoundRobinRerunResultType}
ProspectCompleteResultGraphQL
Fields
| Field Name | Description |
|---|---|
purchaseMode - PurchaseMode
|
Purchase mode of the application |
complete - Boolean!
|
Whether the prospect is fully complete and has been submitted |
duplicatePassed - Boolean
|
NOK duplicate validation passed |
iprsPassed - Boolean
|
NOK IPRS validation passed |
mpesaPassed - Boolean
|
NOK M-Pesa validation passed |
livenessPassed - Boolean
|
Liveness check completed |
riskPassed - Boolean
|
Risk validation passed |
kraPassed - Boolean
|
KRA validation passed |
screens - ProspectsScreensGraphQL
|
Completion status of each prospects screen |
Example
{
"purchaseMode": "CASH",
"complete": false,
"duplicatePassed": false,
"iprsPassed": false,
"mpesaPassed": false,
"livenessPassed": true,
"riskPassed": false,
"kraPassed": false,
"screens": ProspectsScreensGraphQL
}
ProspectStage
Description
Stage of prospect in the application process
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"UNKNOWN"
ProspectStageFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ProspectStage
|
|
ne - ProspectStage
|
|
in - [ProspectStage!]
|
|
notIn - [ProspectStage!]
|
Example
{"eq": "UNKNOWN", "ne": "UNKNOWN", "in": ["UNKNOWN"], "notIn": ["UNKNOWN"]}
ProspectsScreensGraphQL
RawCustomerWalletsDto
Fields
| Field Name | Description |
|---|---|
customer_wallet_id - ID!
|
Unique customer wallet identifier |
customer_id - ID!
|
Customer ID this wallet belongs to |
customer_wallet_available_balance - Float!
|
Available balance in wallet |
customer_wallet_total_payments - Float!
|
Total payments made to wallet |
customer_wallet_total_adjustments - Float!
|
Total adjustments made to wallet |
customer_wallet_total_days_given - Float!
|
Total days given to customer |
customer_wallet_total_points - Float!
|
Total points earned by customer |
customer_wallet_total_allocated - Float!
|
Total amount allocated from wallet |
customer_wallet_lifetime_credits - Float!
|
Lifetime credits to wallet |
customer_wallet_lifetime_debits - Float!
|
Lifetime debits from wallet |
customer_wallet_currency - CurrencyEnum!
|
Wallet currency |
customer_wallet_created_at - DateTime!
|
Wallet creation timestamp |
customer_wallet_updated_at - DateTime!
|
Wallet last update timestamp |
Example
{
"customer_wallet_id": 4,
"customer_id": 4,
"customer_wallet_available_balance": 987.65,
"customer_wallet_total_payments": 123.45,
"customer_wallet_total_adjustments": 987.65,
"customer_wallet_total_days_given": 987.65,
"customer_wallet_total_points": 123.45,
"customer_wallet_total_allocated": 987.65,
"customer_wallet_lifetime_credits": 987.65,
"customer_wallet_lifetime_debits": 123.45,
"customer_wallet_currency": "KES",
"customer_wallet_created_at": "2007-12-03T10:15:30Z",
"customer_wallet_updated_at": "2007-12-03T10:15:30Z"
}
RawCustomersDto
Fields
| Field Name | Description |
|---|---|
customer_id - ID!
|
Unique customer identifier |
customer_created_at - DateTime!
|
Customer creation timestamp |
customer_type - CustomerTypeEnum!
|
Customer type (individual/organization) |
customer_phone_number - String!
|
Customer phone number |
official_id_number - String!
|
Official ID number (National ID or Business Registration) |
country - String
|
ISO 3166-1 alpha-2 country code e.g. KE |
county - String
|
County |
sub_county - String
|
Sub-county |
ward - String
|
Ward |
town - String
|
Town |
landmark - String
|
Landmark |
customer_email_address - String
|
Customer email address |
customer_status - CustomerStatusEnum!
|
Customer status |
display_name - String!
|
Display name (auto-computed from names) |
customer_first_name - String
|
Customer first name (for individuals) |
customer_surname_name - String
|
Customer surname (for individuals) |
organization_name - String
|
Organization name (for organizations) |
organization_registration_number - String
|
Organization registration number |
individual_details - IndividualDetailsDto
|
Individual specific details |
organization_details - OrganizationDetailsDto
|
Organization specific details |
contact_person - ContactPersonDto
|
Contact person for organizations |
kyc_documents - KycDocumentsDto
|
KYC document URLs |
next_of_kin - NextOfKinDto
|
Next of kin |
total_loans_taken - Float!
|
Total loans taken by customer |
active_loans_count - Float!
|
Active loans count |
completed_loans_count - Float!
|
Completed loans count |
has_defaulted - Boolean!
|
Whether customer has defaulted |
current_credit_score - String
|
Current credit score |
metadata - JSONObject
|
Raw customer metadata |
customer_updated_at - DateTime!
|
Customer last update timestamp |
keycloak_id - String
|
For login |
referral_code - String
|
referral code |
applications - [ApplicationEntityGraphQL!]!
|
|
latestApplication - ApplicationEntityGraphQL
|
Example
{
"customer_id": "4",
"customer_created_at": "2007-12-03T10:15:30Z",
"customer_type": "INDIVIDUAL",
"customer_phone_number": "xyz789",
"official_id_number": "xyz789",
"country": "abc123",
"county": "xyz789",
"sub_county": "abc123",
"ward": "xyz789",
"town": "xyz789",
"landmark": "xyz789",
"customer_email_address": "xyz789",
"customer_status": "ACTIVE",
"display_name": "abc123",
"customer_first_name": "xyz789",
"customer_surname_name": "abc123",
"organization_name": "abc123",
"organization_registration_number": "abc123",
"individual_details": IndividualDetailsDto,
"organization_details": OrganizationDetailsDto,
"contact_person": ContactPersonDto,
"kyc_documents": KycDocumentsDto,
"next_of_kin": NextOfKinDto,
"total_loans_taken": 123.45,
"active_loans_count": 123.45,
"completed_loans_count": 987.65,
"has_defaulted": false,
"current_credit_score": "abc123",
"metadata": {},
"customer_updated_at": "2007-12-03T10:15:30Z",
"keycloak_id": "xyz789",
"referral_code": "xyz789",
"applications": [ApplicationEntityGraphQL],
"latestApplication": ApplicationEntityGraphQL
}
RawCustomersFilterInput
Fields
| Input Field | Description |
|---|---|
customer_ids - [String!]
|
Filter by customer IDs |
customer_type - CustomerTypeEnum
|
Filter by customer type |
customer_phone_number - String
|
Filter by phone number |
official_id_number - String
|
Filter by official ID number |
device_id - String
|
Filter by MDM provider device ID (raw_inventory.mdm_status.device_id) |
customer_email_address - String
|
Filter by email address |
customer_status - CustomerStatusEnum
|
Filter by customer status |
customer_first_name - String
|
Filter by first name (partial match) |
customer_surname_name - String
|
Filter by surname (partial match) |
organization_name - String
|
Filter by organization name (partial match) |
organization_registration_number - String
|
Filter by organization registration number |
display_name - String
|
Filter by display name (partial match) |
has_defaulted - Boolean
|
Filter by default status |
min_total_loans_taken - Float
|
Minimum total loans taken |
max_total_loans_taken - Float
|
Maximum total loans taken |
min_active_loans_count - Float
|
Minimum active loans count |
max_active_loans_count - Float
|
Maximum active loans count |
min_credit_score - Float
|
Minimum credit score |
max_credit_score - Float
|
Maximum credit score |
created_from - DateTime
|
Filter by creation date from |
created_to - DateTime
|
Filter by creation date to |
updated_from - DateTime
|
Filter by update date from |
updated_to - DateTime
|
Filter by update date to |
Example
{
"customer_ids": ["xyz789"],
"customer_type": "INDIVIDUAL",
"customer_phone_number": "abc123",
"official_id_number": "abc123",
"device_id": "xyz789",
"customer_email_address": "xyz789",
"customer_status": "ACTIVE",
"customer_first_name": "xyz789",
"customer_surname_name": "xyz789",
"organization_name": "xyz789",
"organization_registration_number": "xyz789",
"display_name": "xyz789",
"has_defaulted": true,
"min_total_loans_taken": 987.65,
"max_total_loans_taken": 987.65,
"min_active_loans_count": 123.45,
"max_active_loans_count": 123.45,
"min_credit_score": 987.65,
"max_credit_score": 123.45,
"created_from": "2007-12-03T10:15:30Z",
"created_to": "2007-12-03T10:15:30Z",
"updated_from": "2007-12-03T10:15:30Z",
"updated_to": "2007-12-03T10:15:30Z"
}
ResubmissionChangesGraphQL
Fields
| Field Name | Description |
|---|---|
active_selfie - ID
|
|
active_front_id - ID
|
|
active_back_id - ID
|
|
active_mpesa_statement - ID
|
|
active_bank_statement - ID
|
|
kra_pin - String
|
|
bank_or_statement_or_kra_or_pin - String
|
|
first_name - String
|
|
other_name - String
|
|
id_type - String
|
|
id_number - String
|
|
mpesa_number - String
|
|
preferred_delivery_date - String
|
|
product_change - String
|
|
loan_repayment_period - String
|
Example
{
"active_selfie": 4,
"active_front_id": "4",
"active_back_id": 4,
"active_mpesa_statement": "4",
"active_bank_statement": 4,
"kra_pin": "xyz789",
"bank_or_statement_or_kra_or_pin": "abc123",
"first_name": "xyz789",
"other_name": "xyz789",
"id_type": "abc123",
"id_number": "xyz789",
"mpesa_number": "xyz789",
"preferred_delivery_date": "abc123",
"product_change": "xyz789",
"loan_repayment_period": "abc123"
}
ResubmissionCheckInput
ResubmissionFilterInput
Description
Filter input for resubmission queries
Fields
| Input Field | Description |
|---|---|
application_id - StringFilterInput
|
Filter by application ID |
prospect_id - StringFilterInput
|
Filter by prospect ID |
lead_id - StringFilterInput
|
Filter by lead ID |
status - ResubmissionStatusFilterInput
|
Filter by resubmission status |
journey - ResubmissionJourneyFilterInput
|
Filter by resubmission journey type |
submitted_by - StringFilterInput
|
Filter by the agent who submitted the resubmission |
createdAt - DateFilterInput
|
Filter by creation date |
updatedAt - DateFilterInput
|
Filter by last updated date |
Example
{
"application_id": StringFilterInput,
"prospect_id": StringFilterInput,
"lead_id": StringFilterInput,
"status": ResubmissionStatusFilterInput,
"journey": ResubmissionJourneyFilterInput,
"submitted_by": StringFilterInput,
"createdAt": DateFilterInput,
"updatedAt": DateFilterInput
}
ResubmissionFormSchemaGraphQL
Fields
| Field Name | Description |
|---|---|
groups - JSON!
|
Dynamic grouped form schema for resubmission |
Example
{"groups": {}}
ResubmissionIprsCheckInput
Fields
| Input Field | Description |
|---|---|
resubmissionId - ID!
|
|
type - ValidationCheckType!
|
|
iprsGatewayType - IprsPlatform
|
|
justification - String!
|
Reason for running this check |
Example
{
"resubmissionId": 4,
"type": "CUSTOMER",
"iprsGatewayType": "TRANSUNION",
"justification": "xyz789"
}
ResubmissionJourneyFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ResubmissionJourneyType
|
|
ne - ResubmissionJourneyType
|
|
in - [ResubmissionJourneyType!]
|
|
notIn - [ResubmissionJourneyType!]
|
Example
{"eq": "CREDIT", "ne": "CREDIT", "in": ["CREDIT"], "notIn": ["CREDIT"]}
ResubmissionJourneyGraphQL
Fields
| Field Name | Description |
|---|---|
isEligible - Boolean!
|
Whether the application is eligible for resubmission |
type - ResubmissionJourneyType
|
Type of resubmission journey |
bucket - CustomerBucket
|
Customer bucket classification from the credit process |
reason - String
|
Reason for ineligibility |
daysSinceSubmission - Float
|
Days elapsed since the prospect was submitted |
Example
{
"isEligible": false,
"type": "CREDIT",
"bucket": "CU1",
"reason": "xyz789",
"daysSinceSubmission": 987.65
}
ResubmissionJourneyType
Description
Type of resubmission journey
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"CREDIT"
ResubmissionOverviewSection
ResubmissionOverviewType
Fields
| Field Name | Description |
|---|---|
isEligible - Boolean!
|
|
reason - String
|
|
journeyType - ResubmissionJourneyType
|
|
bucket - String
|
|
hasSubmittableFields - Boolean!
|
|
pendingChecks - [String!]
|
|
sections - [ResubmissionOverviewSection!]!
|
Example
{
"isEligible": false,
"reason": "abc123",
"journeyType": "CREDIT",
"bucket": "abc123",
"hasSubmittableFields": false,
"pendingChecks": ["abc123"],
"sections": [ResubmissionOverviewSection]
}
ResubmissionStatusEnum
Description
Status of a resubmission record
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
ResubmissionStatusFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ResubmissionStatusEnum
|
|
ne - ResubmissionStatusEnum
|
|
in - [ResubmissionStatusEnum!]
|
|
notIn - [ResubmissionStatusEnum!]
|
Example
{"eq": "PENDING", "ne": "PENDING", "in": ["PENDING"], "notIn": ["PENDING"]}
ResubmissionValidDataGraphQL
RiskBlockTypeEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CUSTOMER"
RiskBlockTypeFilterInput
Fields
| Input Field | Description |
|---|---|
eq - RiskBlockTypeEnum
|
|
ne - RiskBlockTypeEnum
|
|
in - [RiskBlockTypeEnum!]
|
|
notIn - [RiskBlockTypeEnum!]
|
Example
{"eq": "CUSTOMER", "ne": "CUSTOMER", "in": ["CUSTOMER"], "notIn": ["CUSTOMER"]}
RiskNamespace
Fields
| Field Name | Description |
|---|---|
riskRecord - RawRiskDto
|
|
Arguments
|
|
riskRecordByFilters - RawRiskDto
|
|
Arguments
|
|
riskRecordsCount - Float!
|
|
Arguments
|
|
riskRecordsCursor - CursorPaginatedRawRisk!
|
|
Arguments
|
|
riskRecordsOffset - OffsetPaginatedRawRisk!
|
|
Arguments
|
|
riskRecordsByCustomer - [RawRiskDto!]!
|
|
Arguments
|
|
isBlocked - RawRiskDto
|
CU5 check — returns the active blocking record if the identifiers match BLOCK_NEW_APPLICATIONS, or null. |
Arguments
|
|
createRiskRecord - RawRiskDto!
|
|
Arguments
|
|
updateRiskRecord - RawRiskDto!
|
|
Arguments
|
|
updateManyRiskRecords - Float!
|
|
Arguments
|
|
deleteRiskRecord - Boolean!
|
|
Arguments
|
|
deleteManyRiskRecords - Float!
|
|
Arguments
|
|
deactivateRiskRecord - RawRiskDto!
|
Soft-remove a risk block record. |
Arguments
|
|
combinedRiskFlagForCustomer - CombinedRiskFlagResultType!
|
Combined risk flag for a customer — HIGH_RISK if active risk records exist. |
Arguments
|
|
combinedRiskFlagForApplication - CombinedRiskFlagResultType!
|
Combined risk flag for an application — HIGH_RISK if active risk records exist. |
Arguments
|
|
exemptionEligibility - ExemptionEligibilityType!
|
Check if an application qualifies for exemption based on its current credit status. |
Arguments
|
|
processExemption - ApplicationEntityGraphQL!
|
Process exemption: validate exemption type against credit status, deactivate risk records, set credit to NOT READY and risk flag to Confirmed CLEAN. |
Arguments
|
|
calculateCustomerRisk - Boolean!
|
Force-enqueue a risk calculation job for a customer. |
Arguments
|
|
calculateApplicationRisk - Boolean!
|
Force-enqueue a risk calculation job for an application. |
Arguments
|
|
Example
{
"riskRecord": RawRiskDto,
"riskRecordByFilters": RawRiskDto,
"riskRecordsCount": 123.45,
"riskRecordsCursor": CursorPaginatedRawRisk,
"riskRecordsOffset": OffsetPaginatedRawRisk,
"riskRecordsByCustomer": [RawRiskDto],
"isBlocked": RawRiskDto,
"createRiskRecord": RawRiskDto,
"updateRiskRecord": RawRiskDto,
"updateManyRiskRecords": 123.45,
"deleteRiskRecord": false,
"deleteManyRiskRecords": 123.45,
"deactivateRiskRecord": RawRiskDto,
"combinedRiskFlagForCustomer": CombinedRiskFlagResultType,
"combinedRiskFlagForApplication": CombinedRiskFlagResultType,
"exemptionEligibility": ExemptionEligibilityType,
"processExemption": ApplicationEntityGraphQL,
"calculateCustomerRisk": false,
"calculateApplicationRisk": false
}
RiskRestrictedActionEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"BLOCK_NEW_CUSTOMERS"
RiskRestrictedActionFilterInput
Fields
| Input Field | Description |
|---|---|
eq - RiskRestrictedActionEnum
|
|
ne - RiskRestrictedActionEnum
|
|
in - [RiskRestrictedActionEnum!]
|
|
notIn - [RiskRestrictedActionEnum!]
|
|
all - [RiskRestrictedActionEnum!]
|
Example
{
"eq": "BLOCK_NEW_CUSTOMERS",
"ne": "BLOCK_NEW_CUSTOMERS",
"in": ["BLOCK_NEW_CUSTOMERS"],
"notIn": ["BLOCK_NEW_CUSTOMERS"],
"all": ["BLOCK_NEW_CUSTOMERS"]
}
RiskSeverityEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"LOW"
RiskSeverityFilterInput
Fields
| Input Field | Description |
|---|---|
eq - RiskSeverityEnum
|
|
ne - RiskSeverityEnum
|
|
in - [RiskSeverityEnum!]
|
|
notIn - [RiskSeverityEnum!]
|
Example
{"eq": "LOW", "ne": "LOW", "in": ["LOW"], "notIn": ["LOW"]}
Loan
LoanAccountStatusEnum
Description
Status of loan account
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"NEW_ACTIVE"
LoanApplicationStatus
Description
Status of the loan application
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"UNKNOWN"
LoanApplicationStatusFilterInput
Fields
| Input Field | Description |
|---|---|
eq - LoanApplicationStatus
|
|
ne - LoanApplicationStatus
|
|
in - [LoanApplicationStatus!]
|
|
notIn - [LoanApplicationStatus!]
|
Example
{"eq": "UNKNOWN", "ne": "UNKNOWN", "in": ["UNKNOWN"], "notIn": ["UNKNOWN"]}
LoanContractDto
Fields
| Field Name | Description |
|---|---|
contract_id - ID!
|
Unique loan contract identifier |
loan_id - String
|
Human readable loan identifier |
sale_id - String!
|
Sale ID associated with this loan contract |
customer_id - String
|
Customer ID associated with this loan contract |
customer - RawCustomersDto
|
Customer associated with this loan contract |
opening_date - DateTime
|
Loan contract opening date |
duration - Float!
|
Loan duration in days |
upfront_payment - Float!
|
Upfront payment amount |
deposit - Float!
|
Deposit amount |
repayment_type - RepaymentTypeEnum!
|
Repayment frequency |
gross_loan_amount - Float!
|
Gross loan amount |
net_loan_amount - Float!
|
Net loan amount (gross - upfront deposit) |
interest_rate - Float!
|
Daily interest rate |
repayment_rate - Float!
|
Daily repayment rate |
interest_calculation_method - InterestCalculationMethodEnum!
|
Interest calculation method |
payment_allocation_method - PaymentAllocationMethodEnum!
|
Payment allocation method |
disbursement_date - DateTime
|
Loan disbursement date |
maturity_date - DateTime
|
Loan maturity date |
first_payment_due_date - DateTime
|
First payment due date |
grace_period_days - Float!
|
Grace period in days |
penalty_rate_per_day - Float!
|
Daily penalty rate |
is_restructured - Boolean!
|
Whether this is a restructured loan |
original_contract_id - String
|
Original contract ID if restructured |
loan_product_code - String
|
Loan product code snapshotted from origination plan |
loan_status_override - LoanAccountStatusEnum
|
Manual override for calculated loan account status |
early_payoff_discounts - [LoanEarlyPayoffDiscountType!]!
|
Immutable early payoff discounts snapshotted at origination |
metadata - JSON
|
Additional metadata |
created_at - DateTime!
|
Contract creation timestamp |
updated_at - DateTime!
|
Contract last update timestamp |
installments - [LoanInstallmentDto!]
|
All installments for this contract |
overdueInstallments - [LoanInstallmentDto!]
|
Overdue installments for this contract |
nextDueInstallment - LoanInstallmentDto
|
Next due installment for this contract |
ledgerEntries - [LoanLedgerDto!]
|
Ledger entries for this contract |
delinquencyTracking - LoanDelinquencyTrackingDto
|
Delinquency tracking for this contract |
paymentAllocations - [PaymentAllocationDto!]
|
Payment allocations for this contract |
latest_ledger_id - ID
|
Last ledger id |
grace_period_status - String
|
Persisted grace period status |
grace_period_category - String
|
Persisted grace period category |
grace_period_credit_expiry - DateTime
|
Persisted grace period unlock expiry |
grace_period_last_trigger_source - String
|
Last grace period trigger source |
returned_date - DateTime
|
Device returned date |
is_lost - Boolean!
|
Whether device is lost |
latest_ledger - LoanLedgerDto
|
|
contract - LoanContractDto
|
Example
{
"contract_id": "4",
"loan_id": "abc123",
"sale_id": "abc123",
"customer_id": "xyz789",
"customer": RawCustomersDto,
"opening_date": "2007-12-03T10:15:30Z",
"duration": 123.45,
"upfront_payment": 123.45,
"deposit": 987.65,
"repayment_type": "DAILY",
"gross_loan_amount": 987.65,
"net_loan_amount": 123.45,
"interest_rate": 123.45,
"repayment_rate": 123.45,
"interest_calculation_method": "SIMPLE_REDUCING_BALANCE",
"payment_allocation_method": "INTEREST_FIRST",
"disbursement_date": "2007-12-03T10:15:30Z",
"maturity_date": "2007-12-03T10:15:30Z",
"first_payment_due_date": "2007-12-03T10:15:30Z",
"grace_period_days": 123.45,
"penalty_rate_per_day": 987.65,
"is_restructured": false,
"original_contract_id": "abc123",
"loan_product_code": "xyz789",
"loan_status_override": "NEW_ACTIVE",
"early_payoff_discounts": [LoanEarlyPayoffDiscountType],
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"installments": [LoanInstallmentDto],
"overdueInstallments": [LoanInstallmentDto],
"nextDueInstallment": LoanInstallmentDto,
"ledgerEntries": [LoanLedgerDto],
"delinquencyTracking": LoanDelinquencyTrackingDto,
"paymentAllocations": [PaymentAllocationDto],
"latest_ledger_id": 4,
"grace_period_status": "abc123",
"grace_period_category": "abc123",
"grace_period_credit_expiry": "2007-12-03T10:15:30Z",
"grace_period_last_trigger_source": "xyz789",
"returned_date": "2007-12-03T10:15:30Z",
"is_lost": true,
"latest_ledger": LoanLedgerDto,
"contract": LoanContractDto
}
LoanContractFilterInput
Description
Filter input for querying loan contracts
Fields
| Input Field | Description |
|---|---|
contract_id - StringFilterInput
|
Filter by contract ID |
loan_id - StringFilterInput
|
Filter by loan ID |
sale_id - StringFilterInput
|
Filter by sale ID |
customer_id - StringFilterInput
|
Filter by customer ID |
status - LoanAccountStatusEnum
|
Filter by loan status |
repayment_type - RepaymentTypeEnum
|
Filter by repayment type |
interest_calculation_method - InterestCalculationMethodEnum
|
Filter by interest calculation method |
payment_allocation_method - PaymentAllocationMethodEnum
|
Filter by payment allocation method |
is_restructured - BooleanFilterInput
|
Filter by restructured status |
original_contract_id - StringFilterInput
|
Filter by original contract ID |
delinquency_status - DelinquencyStatusEnum
|
Filter by delinquency status |
escalation_level - EscalationLevelEnum
|
Filter by escalation level |
days_past_due_threshold - IntFilterInput
|
Filter by minimum days past due |
arrears_amount_threshold - FloatFilterInput
|
Filter by minimum arrears amount |
duration - IntFilterInput
|
Filter by duration in days |
upfront_payment - FloatFilterInput
|
Filter by upfront payment amount |
deposit - FloatFilterInput
|
Filter by deposit amount |
gross_loan_amount - FloatFilterInput
|
Filter by gross loan amount |
net_loan_amount - FloatFilterInput
|
Filter by net loan amount |
interest_rate - FloatFilterInput
|
Filter by interest rate |
repayment_rate - FloatFilterInput
|
Filter by repayment rate |
penalty_rate_per_day - FloatFilterInput
|
Filter by penalty rate per day |
opening_date - DateFilterInput
|
Filter by opening date |
disbursement_date - DateFilterInput
|
Filter by disbursement date |
maturity_date - DateFilterInput
|
Filter by maturity date |
first_payment_due_date - DateFilterInput
|
Filter by first payment due date |
returned_date - DateFilterInput
|
Filter by returned date |
grace_period_credit_expiry - DateFilterInput
|
Filter by grace period credit expiry |
created_at - DateFilterInput
|
Filter by created date |
updated_at - DateFilterInput
|
Filter by updated date |
loan_product_code - StringFilterInput
|
Filter by loan product code |
grace_period_status - StringFilterInput
|
Filter by grace period status |
grace_period_category - StringFilterInput
|
Filter by grace period category |
grace_period_last_trigger_source - StringFilterInput
|
Filter by grace period last trigger source |
latest_ledger_id - StringFilterInput
|
Filter by latest ledger ID |
latest_delinquency_tracking_id - StringFilterInput
|
Filter by latest delinquency tracking ID |
is_lost - BooleanFilterInput
|
Filter by lost status |
Example
{
"contract_id": StringFilterInput,
"loan_id": StringFilterInput,
"sale_id": StringFilterInput,
"customer_id": StringFilterInput,
"status": "NEW_ACTIVE",
"repayment_type": "DAILY",
"interest_calculation_method": "SIMPLE_REDUCING_BALANCE",
"payment_allocation_method": "INTEREST_FIRST",
"is_restructured": BooleanFilterInput,
"original_contract_id": StringFilterInput,
"delinquency_status": "CURRENT",
"escalation_level": "REMINDER",
"days_past_due_threshold": IntFilterInput,
"arrears_amount_threshold": FloatFilterInput,
"duration": IntFilterInput,
"upfront_payment": FloatFilterInput,
"deposit": FloatFilterInput,
"gross_loan_amount": FloatFilterInput,
"net_loan_amount": FloatFilterInput,
"interest_rate": FloatFilterInput,
"repayment_rate": FloatFilterInput,
"penalty_rate_per_day": FloatFilterInput,
"opening_date": DateFilterInput,
"disbursement_date": DateFilterInput,
"maturity_date": DateFilterInput,
"first_payment_due_date": DateFilterInput,
"returned_date": DateFilterInput,
"grace_period_credit_expiry": DateFilterInput,
"created_at": DateFilterInput,
"updated_at": DateFilterInput,
"loan_product_code": StringFilterInput,
"grace_period_status": StringFilterInput,
"grace_period_category": StringFilterInput,
"grace_period_last_trigger_source": StringFilterInput,
"latest_ledger_id": StringFilterInput,
"latest_delinquency_tracking_id": StringFilterInput,
"is_lost": BooleanFilterInput
}
LoanContractsNamespace
Fields
| Field Name | Description |
|---|---|
loanContract - LoanContractDto!
|
Get loan contract by ID |
Arguments
|
|
loanContractBySaleId - LoanContractDto!
|
Get loan contract by sale ID |
Arguments
|
|
loanContractsByCustomerId - [LoanContractDto!]!
|
Get loan contracts by customer ID |
Arguments
|
|
loanContractsByStatus - [LoanContractDto!]!
|
Get loan contracts by status |
Arguments
|
|
loanContractsByRepaymentType - [LoanContractDto!]!
|
Get loan contracts by repayment type |
Arguments
|
|
activeLoanContracts - [LoanContractDto!]!
|
Get active loan contracts |
allLoanContracts - [LoanContractDto!]!
|
Get all loan contracts |
loanContractsWithOffsetPagination - OffsetPaginatedLoanContracts!
|
Get loan contracts with offset pagination |
Arguments
|
|
loanContractsCursor - CursorPaginatedLoanContracts!
|
Get loan contracts with cursor pagination |
Arguments
|
|
loanContractsCount - Float!
|
Count loan contracts with filters |
Arguments
|
|
createLoanContract - LoanContractDto!
|
Create a new loan contract |
Arguments
|
|
updateLoanContract - LoanContractDto!
|
Update loan contract by ID |
Arguments
|
|
deleteLoanContract - Boolean!
|
Delete loan contract by ID |
Arguments
|
|
deleteManyLoanContracts - Float!
|
Delete multiple loan contracts |
Arguments
|
|
markLoanContractAsPaidOff - LoanContractDto!
|
Mark loan contract as paid off |
markLoanContractAsWriteOff - LoanContractDto!
|
Mark loan contract as write off |
Arguments
|
|
disburseLoanContract - LoanContractDto!
|
Disburse loan contract |
earlySettlementQuote - EarlySettlementQuoteType!
|
Quote the current early settlement amount for a contract |
applyEarlySettlement - ApplyEarlySettlementResultType!
|
Apply early settlement for a contract using an existing payment |
Arguments
|
|
triggerContractAging - AgingResult!
|
Manually trigger aging for a specific contract |
Arguments
|
|
triggerCustomerAging - AgingResult!
|
Manually trigger aging for all contracts of a customer |
Arguments
|
|
Example
{
"loanContract": LoanContractDto,
"loanContractBySaleId": LoanContractDto,
"loanContractsByCustomerId": [LoanContractDto],
"loanContractsByStatus": [LoanContractDto],
"loanContractsByRepaymentType": [LoanContractDto],
"activeLoanContracts": [LoanContractDto],
"allLoanContracts": [LoanContractDto],
"loanContractsWithOffsetPagination": OffsetPaginatedLoanContracts,
"loanContractsCursor": CursorPaginatedLoanContracts,
"loanContractsCount": 987.65,
"createLoanContract": LoanContractDto,
"updateLoanContract": LoanContractDto,
"deleteLoanContract": true,
"deleteManyLoanContracts": 123.45,
"markLoanContractAsPaidOff": LoanContractDto,
"markLoanContractAsWriteOff": LoanContractDto,
"disburseLoanContract": LoanContractDto,
"earlySettlementQuote": EarlySettlementQuoteType,
"applyEarlySettlement": ApplyEarlySettlementResultType,
"triggerContractAging": AgingResult,
"triggerCustomerAging": AgingResult
}
LoanDashboardNamespace
Fields
| Field Name | Description |
|---|---|
summary - LoanDashboardSummary!
|
Get loan portfolio dashboard summary |
Example
{"summary": LoanDashboardSummary}
LoanDashboardSummary
Fields
| Field Name | Description |
|---|---|
contractsCount - Float!
|
|
activeContractsCount - Float!
|
|
outstandingBalanceTotal - Float!
|
|
arrearsTotal - Float!
|
|
overdueContractsCount - Float!
|
|
dueTodayCount - Float!
|
|
dueNext7DaysCount - Float!
|
|
collectionsQueueCount - Float!
|
|
recoveryQueueCount - Float!
|
|
closedContractsCount - Float!
|
Example
{
"contractsCount": 123.45,
"activeContractsCount": 123.45,
"outstandingBalanceTotal": 987.65,
"arrearsTotal": 987.65,
"overdueContractsCount": 987.65,
"dueTodayCount": 123.45,
"dueNext7DaysCount": 987.65,
"collectionsQueueCount": 123.45,
"recoveryQueueCount": 123.45,
"closedContractsCount": 123.45
}
LoanDelinquencyNamespace
Fields
| Field Name | Description |
|---|---|
loanDelinquencyTracking - LoanDelinquencyTrackingDto!
|
Get loan delinquency tracking by ID |
Arguments
|
|
allLoanDelinquencyTracking - [LoanDelinquencyTrackingDto!]!
|
Get all loan delinquency tracking records |
loanDelinquencyTrackingWithOffsetPagination - OffsetPaginatedLoanDelinquencyTracking!
|
Get loan delinquency tracking with offset pagination |
Arguments
|
|
loanDelinquencyTrackingCount - Float!
|
Count loan delinquency tracking records with filters |
Arguments
|
|
createLoanDelinquencyTracking - LoanDelinquencyTrackingDto!
|
Create a new loan delinquency tracking record |
Arguments |
|
updateLoanDelinquencyTracking - LoanDelinquencyTrackingDto!
|
Update loan delinquency tracking by ID |
Arguments
|
|
deleteLoanDelinquencyTracking - Boolean!
|
Delete loan delinquency tracking by ID |
Arguments
|
|
Example
{
"loanDelinquencyTracking": LoanDelinquencyTrackingDto,
"allLoanDelinquencyTracking": [
LoanDelinquencyTrackingDto
],
"loanDelinquencyTrackingWithOffsetPagination": OffsetPaginatedLoanDelinquencyTracking,
"loanDelinquencyTrackingCount": 987.65,
"createLoanDelinquencyTracking": LoanDelinquencyTrackingDto,
"updateLoanDelinquencyTracking": LoanDelinquencyTrackingDto,
"deleteLoanDelinquencyTracking": true
}
LoanDelinquencyTrackingDto
Fields
| Field Name | Description |
|---|---|
tracking_id - ID!
|
Unique delinquency tracking identifier |
contract_id - String!
|
Contract ID associated with this tracking record |
status - DelinquencyStatusEnum!
|
Delinquency status |
delinquency_start_date - DateTime
|
Date when delinquency started |
default_date - DateTime
|
Date when account defaulted |
days_past_due - Float!
|
Number of days past due |
amount_overdue - Float!
|
Amount currently overdue |
escalation_level - EscalationLevelEnum!
|
Collection escalation level |
collection_actions - JSON
|
Collection actions history |
write_off_date - DateTime
|
Date when account was written off |
recovery_amount - Float
|
Amount recovered |
recovery_probability - Float
|
Recovery probability (0-1) |
last_contact_date - DateTime
|
Last contact date with customer |
next_action_date - DateTime
|
Next planned action date |
assigned_collector - String
|
Assigned collector name |
notes - String
|
Collection notes |
metadata - JSON
|
Additional metadata |
created_at - DateTime!
|
Tracking record creation timestamp |
updated_at - DateTime!
|
Tracking record last update timestamp |
contract - LoanContractDto
|
Loan Contract |
Example
{
"tracking_id": 4,
"contract_id": "abc123",
"status": "CURRENT",
"delinquency_start_date": "2007-12-03T10:15:30Z",
"default_date": "2007-12-03T10:15:30Z",
"days_past_due": 987.65,
"amount_overdue": 123.45,
"escalation_level": "REMINDER",
"collection_actions": {},
"write_off_date": "2007-12-03T10:15:30Z",
"recovery_amount": 987.65,
"recovery_probability": 987.65,
"last_contact_date": "2007-12-03T10:15:30Z",
"next_action_date": "2007-12-03T10:15:30Z",
"assigned_collector": "xyz789",
"notes": "abc123",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"contract": LoanContractDto
}
LoanDelinquencyTrackingFilterInput
Description
Filter input for querying loan delinquency tracking records
Fields
| Input Field | Description |
|---|---|
contract_id - String
|
Filter by contract ID |
status - DelinquencyStatusEnum
|
Filter by delinquency status |
escalation_level - EscalationLevelEnum
|
Filter by escalation level |
assigned_collector - String
|
Filter by assigned collector |
Example
{
"contract_id": "abc123",
"status": "CURRENT",
"escalation_level": "REMINDER",
"assigned_collector": "abc123"
}
LoanEarlyPayoffDiscountType
LoanInstallmentDto
Fields
| Field Name | Description |
|---|---|
installment_id - ID!
|
Unique installment identifier |
contract_id - String!
|
Contract ID associated with this installment |
installment_number - Float!
|
Installment number in sequence |
installment_type - InstallmentTypeEnum!
|
Type of installment |
due_date - DateTime!
|
Installment due date |
due_repayment_amount - Float!
|
Total amount due for this installment |
due_repayment_principal - Float!
|
Principal amount portion |
due_repayment_interest - Float!
|
Interest amount portion |
penalty_amount - Float!
|
Penalty amount portion |
due_cumulative_principal - Float!
|
Cumulative principal to date |
due_cumulative_interest - Float!
|
Cumulative interest to date |
cumulative_expected_repay - Float!
|
Cumulative expected repayment (due_cumulative_principal + due_cumulative_interest) |
paid_principal - Float!
|
Principal amount paid |
paid_interest - Float!
|
Interest amount paid |
paid_penalty - Float!
|
Penalty amount paid |
outstanding_amount - Float!
|
Outstanding amount remaining |
amount_paid - Float!
|
Total amount paid for this installment |
status - InstallmentStatusEnum!
|
Installment status |
paid_date - DateTime
|
Date when installment was paid |
days_overdue - Float!
|
Days overdue |
installment_year_month - String!
|
Installment year-month (YYYY-MM) |
metadata - JSON
|
Additional metadata |
created_at - DateTime!
|
Installment creation timestamp |
updated_at - DateTime!
|
Installment last update timestamp |
paymentAllocations - [PaymentAllocationDto!]
|
Payment allocations for this installment |
contract - LoanContractDto
|
Loan Contract |
Example
{
"installment_id": "4",
"contract_id": "xyz789",
"installment_number": 123.45,
"installment_type": "REGULAR",
"due_date": "2007-12-03T10:15:30Z",
"due_repayment_amount": 987.65,
"due_repayment_principal": 123.45,
"due_repayment_interest": 987.65,
"penalty_amount": 123.45,
"due_cumulative_principal": 123.45,
"due_cumulative_interest": 987.65,
"cumulative_expected_repay": 123.45,
"paid_principal": 123.45,
"paid_interest": 987.65,
"paid_penalty": 123.45,
"outstanding_amount": 123.45,
"amount_paid": 123.45,
"status": "PENDING",
"paid_date": "2007-12-03T10:15:30Z",
"days_overdue": 987.65,
"installment_year_month": "xyz789",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"paymentAllocations": [PaymentAllocationDto],
"contract": LoanContractDto
}
LoanInstallmentFilterInput
Description
Filter input for querying loan installments
Fields
| Input Field | Description |
|---|---|
contract_id - String
|
Filter by contract ID |
installment_type - InstallmentTypeEnum
|
Filter by installment type |
status - InstallmentStatusEnum
|
Filter by installment status |
installment_year_month - String
|
Filter by installment year-month |
Example
{
"contract_id": "abc123",
"installment_type": "REGULAR",
"status": "PENDING",
"installment_year_month": "abc123"
}
LoanInstallmentsNamespace
Fields
| Field Name | Description |
|---|---|
loanInstallment - LoanInstallmentDto!
|
Get loan installment by ID |
Arguments
|
|
allLoanInstallments - [LoanInstallmentDto!]!
|
Get all loan installments |
loanInstallmentsWithOffsetPagination - OffsetPaginatedLoanInstallments!
|
Get loan installments with offset pagination |
Arguments
|
|
loanInstallmentsCursor - CursorPaginatedLoanInstallments!
|
Get loan installments entries with cursor pagination |
Arguments
|
|
loanInstallmentsCount - Float!
|
Count loan installments with filters |
Arguments
|
|
createLoanInstallment - LoanInstallmentDto!
|
Create a new loan installment |
Arguments
|
|
updateLoanInstallment - LoanInstallmentDto!
|
Update loan installment by ID |
Arguments
|
|
deleteLoanInstallment - Boolean!
|
Delete loan installment by ID |
Arguments
|
|
Example
{
"loanInstallment": LoanInstallmentDto,
"allLoanInstallments": [LoanInstallmentDto],
"loanInstallmentsWithOffsetPagination": OffsetPaginatedLoanInstallments,
"loanInstallmentsCursor": CursorPaginatedLoanInstallments,
"loanInstallmentsCount": 987.65,
"createLoanInstallment": LoanInstallmentDto,
"updateLoanInstallment": LoanInstallmentDto,
"deleteLoanInstallment": true
}
LoanLedgerDto
Fields
| Field Name | Description |
|---|---|
ledger_id - ID!
|
Unique ledger entry identifier |
contract_id - String!
|
Contract ID associated with this ledger entry |
transaction_date - DateTime
|
Transaction date |
transaction_type - TransactionTypeEnum!
|
Type of transaction |
transaction_status - TransactionStatusEnum!
|
Transaction status |
debit_credit - DebitCreditEnum!
|
Debit or credit transaction |
balance_due - Float!
|
Amount due on the loan |
amount_paid - Float!
|
Amount paid in this transaction |
arrears_amount - Float!
|
Arrears amount |
advance_amount - Float!
|
Advance payment amount |
next_due_amount - Float!
|
Next due amount |
total_due_today - Float
|
Total amount due as of today |
past_due - Float!
|
Past due amount as percentage |
days_past_due - Float!
|
Days past due |
days_to_expiry - Float!
|
Days to expiry |
loan_age_days - Float!
|
Loan age in days |
repayment_due - Float!
|
Total repayment due |
days_since_last_payment - Float!
|
Days since last payment |
next_invoice_date - DateTime
|
Next invoice date |
last_payment_date - DateTime
|
Last payment date |
credit_expiry_date - DateTime
|
Credit expiry date for device locking |
loan_status - LoanAccountStatusEnum!
|
Loan account status |
payment_type - LoanPaymentTypeEnum
|
Payment type |
payment_id - String
|
Payment ID reference |
description - String
|
Transaction description |
paid_off_override - String
|
Paid off override label for early-settlement reporting |
metadata - JSON
|
Additional metadata |
created_at - DateTime!
|
Ledger entry creation timestamp |
updated_at - DateTime!
|
Ledger entry last update timestamp |
contract - LoanContractDto
|
Loan Contract |
payment - paymentAndAdjustmentUnion
|
Payment or Payment Adjustment |
latest_ledger - LoanLedgerDto
|
Example
{
"ledger_id": "4",
"contract_id": "xyz789",
"transaction_date": "2007-12-03T10:15:30Z",
"transaction_type": "PAYMENT",
"transaction_status": "RECONCILED",
"debit_credit": "DEBIT",
"balance_due": 987.65,
"amount_paid": 123.45,
"arrears_amount": 987.65,
"advance_amount": 123.45,
"next_due_amount": 987.65,
"total_due_today": 123.45,
"past_due": 123.45,
"days_past_due": 987.65,
"days_to_expiry": 987.65,
"loan_age_days": 123.45,
"repayment_due": 987.65,
"days_since_last_payment": 123.45,
"next_invoice_date": "2007-12-03T10:15:30Z",
"last_payment_date": "2007-12-03T10:15:30Z",
"credit_expiry_date": "2007-12-03T10:15:30Z",
"loan_status": "NEW_ACTIVE",
"payment_type": "ADJUSTMENT",
"payment_id": "abc123",
"description": "xyz789",
"paid_off_override": "abc123",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"contract": LoanContractDto,
"payment": PaymentsEntityType,
"latest_ledger": LoanLedgerDto
}
LoanLedgerFilterInput
Description
Filter input for querying loan ledger entries
Fields
| Input Field | Description |
|---|---|
contract_id - String
|
Filter by contract ID |
transaction_type - TransactionTypeEnum
|
Filter by transaction type |
transaction_status - TransactionStatusEnum
|
Filter by transaction status |
debit_credit - DebitCreditEnum
|
Filter by debit or credit |
loan_status - LoanAccountStatusEnum
|
Filter by loan status |
payment_type - LoanPaymentTypeEnum
|
Filter by payment type |
payment_id - String
|
Filter by payment ID |
paid_off_override - String
|
Filter by paid off override label |
Example
{
"contract_id": "xyz789",
"transaction_type": "PAYMENT",
"transaction_status": "RECONCILED",
"debit_credit": "DEBIT",
"loan_status": "NEW_ACTIVE",
"payment_type": "ADJUSTMENT",
"payment_id": "abc123",
"paid_off_override": "abc123"
}
LoanLedgerNamespace
Fields
| Field Name | Description |
|---|---|
loanLedgerEntry - LoanLedgerDto!
|
Get loan ledger entry by ID |
Arguments
|
|
allLoanLedgerEntries - [LoanLedgerDto!]!
|
Get all loan ledger entries |
loanLedgerWithOffsetPagination - OffsetPaginatedLoanLedger!
|
Get loan ledger entries with offset pagination |
Arguments
|
|
loanLedgerCursor - CursorPaginatedLoanLedger!
|
Get loan ledger entries with cursor pagination |
Arguments
|
|
loanLedgerCount - Float!
|
Count loan ledger entries with filters |
Arguments
|
|
createLoanLedgerEntry - LoanLedgerDto!
|
Create a new loan ledger entry |
Arguments
|
|
updateLoanLedgerEntry - LoanLedgerDto!
|
Update loan ledger entry by ID |
Arguments
|
|
deleteLoanLedgerEntry - Boolean!
|
Delete loan ledger entry by ID |
Arguments
|
|
paymentStatement - OffsetPaginatedPaymentStatement!
|
Unified payment statement. Routes to raw_loan_ledger for LON* contracts, raw_payment_allocation for others. Ordered by transactionDate DESC. |
Arguments |
|
Example
{
"loanLedgerEntry": LoanLedgerDto,
"allLoanLedgerEntries": [LoanLedgerDto],
"loanLedgerWithOffsetPagination": OffsetPaginatedLoanLedger,
"loanLedgerCursor": CursorPaginatedLoanLedger,
"loanLedgerCount": 987.65,
"createLoanLedgerEntry": LoanLedgerDto,
"updateLoanLedgerEntry": LoanLedgerDto,
"deleteLoanLedgerEntry": true,
"paymentStatement": OffsetPaginatedPaymentStatement
}
LoanModuleNamespace
Fields
| Field Name | Description |
|---|---|
loanContracts - LoanContractsNamespace!
|
|
loanLedger - LoanLedgerNamespace!
|
|
paymentAllocations - PaymentAllocationsNamespace!
|
|
loanInstallments - LoanInstallmentsNamespace!
|
|
loanDelinquency - LoanDelinquencyNamespace!
|
|
loanOverrides - LoanOverridesNamespace!
|
|
accountStatus - AccountStatusNamespace!
|
|
loanDashboard - LoanDashboardNamespace!
|
Example
{
"loanContracts": LoanContractsNamespace,
"loanLedger": LoanLedgerNamespace,
"paymentAllocations": PaymentAllocationsNamespace,
"loanInstallments": LoanInstallmentsNamespace,
"loanDelinquency": LoanDelinquencyNamespace,
"loanOverrides": LoanOverridesNamespace,
"accountStatus": AccountStatusNamespace,
"loanDashboard": LoanDashboardNamespace
}
LoanOverrideDto
Fields
| Field Name | Description |
|---|---|
override_id - ID!
|
Unique override identifier |
loan_id - String!
|
Loan ID associated with this override |
field_name - String!
|
Name of the field being overridden |
old_value - String
|
Previous value of the field |
new_value - String!
|
New value for the field |
reason - String
|
Reason for the override |
approved_by - String
|
User who approved the override |
sales_override_created_at - DateTime!
|
Override creation timestamp |
sales_override_updated_at - DateTime!
|
Override last update timestamp |
Example
{
"override_id": "4",
"loan_id": "abc123",
"field_name": "abc123",
"old_value": "xyz789",
"new_value": "xyz789",
"reason": "abc123",
"approved_by": "abc123",
"sales_override_created_at": "2007-12-03T10:15:30Z",
"sales_override_updated_at": "2007-12-03T10:15:30Z"
}
LoanOverrideFilterInput
Description
Filter input for querying loan overrides
Example
{
"loan_id": "xyz789",
"field_name": "xyz789",
"old_value": "xyz789",
"new_value": "xyz789",
"reason": "xyz789",
"approved_by": "abc123"
}
LoanOverridesNamespace
Fields
| Field Name | Description |
|---|---|
loanOverride - LoanOverrideDto!
|
Get loan override by ID |
Arguments
|
|
allLoanOverrides - [LoanOverrideDto!]!
|
Get all loan overrides |
loanOverridesWithOffsetPagination - OffsetPaginatedLoanOverrides!
|
Get loan overrides with offset pagination |
Arguments
|
|
loanOverridesCount - Float!
|
Count loan overrides with filters |
Arguments
|
|
createLoanOverride - LoanOverrideDto!
|
Create a new loan override |
Arguments
|
|
updateLoanOverride - LoanOverrideDto!
|
Update loan override by ID |
Arguments
|
|
deleteLoanOverride - Boolean!
|
Delete loan override by ID |
Arguments
|
|
Example
{
"loanOverride": LoanOverrideDto,
"allLoanOverrides": [LoanOverrideDto],
"loanOverridesWithOffsetPagination": OffsetPaginatedLoanOverrides,
"loanOverridesCount": 987.65,
"createLoanOverride": LoanOverrideDto,
"updateLoanOverride": LoanOverrideDto,
"deleteLoanOverride": false
}
LoanPaymentTypeEnum
Description
Type of payment transaction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ADJUSTMENT"
PaymentAllocationDto
Fields
| Field Name | Description |
|---|---|
allocation_id - ID!
|
Unique payment allocation identifier |
payment_id - String!
|
Payment ID that was allocated |
transaction_type - TransactionTypeEnum!
|
Transaction type enum |
sale_id - String!
|
Sale ID for primary anchor linking |
installment_id - String
|
Installment ID that received the allocation |
contract_id - String
|
Contract ID for reference |
allocated_amount - Float!
|
Total amount allocated from payment |
principal_allocated - Float!
|
Amount allocated to principal |
interest_allocated - Float!
|
Amount allocated to interest |
penalty_allocated - Float!
|
Amount allocated to penalty |
allocation_order - Float!
|
Order of allocation for this payment |
metadata - JSON
|
Additional metadata |
created_at - DateTime!
|
Allocation record creation timestamp |
updated_at - DateTime!
|
Allocation record last update timestamp |
contract - LoanContractDto
|
Loan Contract |
installment - LoanInstallmentDto
|
Loan installment |
payment - PaymentAllocationPaymentUnion
|
Resolved payment source, either a raw payment or a payment adjustment |
Example
{
"allocation_id": 4,
"payment_id": "abc123",
"transaction_type": "PAYMENT",
"sale_id": "abc123",
"installment_id": "abc123",
"contract_id": "xyz789",
"allocated_amount": 123.45,
"principal_allocated": 987.65,
"interest_allocated": 987.65,
"penalty_allocated": 987.65,
"allocation_order": 987.65,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"contract": LoanContractDto,
"installment": LoanInstallmentDto,
"payment": PaymentsEntityType
}
PaymentAllocationFilterInput
Description
Filter input for querying payment allocations
Example
{
"payment_id": "xyz789",
"sale_id": "abc123",
"installment_id": "abc123",
"contract_id": "xyz789"
}
PaymentAllocationMethodEnum
Description
Method for allocating payments between interest and principal
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"INTEREST_FIRST"
PaymentAllocationPaymentUnion
Types
| Union Types |
|---|
Example
PaymentsEntityType
PaymentAllocationsNamespace
Fields
| Field Name | Description |
|---|---|
paymentAllocation - PaymentAllocationDto!
|
Get payment allocation by ID |
Arguments
|
|
allPaymentAllocations - [PaymentAllocationDto!]!
|
Get all payment allocations |
paymentAllocationsWithOffsetPagination - OffsetPaginatedPaymentAllocations!
|
Get payment allocations with offset pagination |
Arguments
|
|
paymentAllocationsCount - Float!
|
Count payment allocations with filters |
Arguments
|
|
createPaymentAllocation - PaymentAllocationDto!
|
Create a new payment allocation |
Arguments
|
|
updatePaymentAllocation - PaymentAllocationDto!
|
Update payment allocation by ID |
Arguments
|
|
deletePaymentAllocation - Boolean!
|
Delete payment allocation by ID |
Arguments
|
|
moveLoanPayments - MoveLoanPaymentsResultType!
|
Auditable admin mutation: inserts negative reversal rows for every active allocation on oldLoanId, then recreates them on newLoanId (capped at the new loan gross). Any overpayment is swept to the customer wallet (auto-creating the wallet if absent). Writes is_restructured + original_contract_id on the new loan and appends a RESTRUCTURE ledger entry on the old loan. Per-payment PaymentAdjustment rows link old↔new contracts for audit. |
Arguments
|
|
Example
{
"paymentAllocation": PaymentAllocationDto,
"allPaymentAllocations": [PaymentAllocationDto],
"paymentAllocationsWithOffsetPagination": OffsetPaginatedPaymentAllocations,
"paymentAllocationsCount": 987.65,
"createPaymentAllocation": PaymentAllocationDto,
"updatePaymentAllocation": PaymentAllocationDto,
"deletePaymentAllocation": true,
"moveLoanPayments": MoveLoanPaymentsResultType
}
Payment
BankRequestInput
Example
{
"amount": 987.65,
"currency": "abc123",
"reference": "xyz789",
"customer_id": "abc123",
"wallet_id": "abc123",
"description": "xyz789",
"metadata": {},
"accountNumber": "abc123",
"bankCode": "xyz789",
"accountName": "xyz789"
}
ChannelCategoryEnum
Description
Categories of channel types
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"IN_HOUSE"
ChannelTypeEnum
Description
Types of sales channels
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ONLINE_AGENT"
PaymentAdjustmentFilterInput
Fields
| Input Field | Description |
|---|---|
customer_id - ID
|
|
payment_id - ID
|
|
statuses - [AdjustmentStatusEnum!]
|
|
reasons - [AdjustmentReasonEnum!]
|
|
dr_cr - DrCrEnum
|
|
currency - CurrencyEnum
|
|
min_amount - Float
|
|
max_amount - Float
|
|
from_date - DateTime
|
|
to_date - DateTime
|
|
contract_number - String
|
|
adjustment_status - AdjustmentStatusEnum
|
Example
{
"customer_id": 4,
"payment_id": "4",
"statuses": ["EFFECTED"],
"reasons": ["DEPOSIT"],
"dr_cr": "DR",
"currency": "KES",
"min_amount": 987.65,
"max_amount": 123.45,
"from_date": "2007-12-03T10:15:30Z",
"to_date": "2007-12-03T10:15:30Z",
"contract_number": "xyz789",
"adjustment_status": "EFFECTED"
}
PaymentAdjustmentsEntityType
Fields
| Field Name | Description |
|---|---|
adjustment_id - ID!
|
|
adjustment_amount - Float!
|
|
adjustment_currency - CurrencyEnum!
|
Adjustment currency |
customer_id - RawCustomersDto
|
|
payment_id - ID
|
|
related_adjustment_id - ID
|
|
reverses_adjustment_id - ID
|
|
idempotency_key - String
|
|
reason_code - PaymentRevocationReasonCodeEnum
|
|
adjustment_reason - AdjustmentReasonEnum!
|
|
adjustment_type - AdjustmentTypeEnum!
|
|
adjustment_status - AdjustmentStatusEnum!
|
|
posting_type - PostingTypeEnum
|
|
posting_tag - PostingTagEnum
|
|
adjustment_note - String!
|
|
dr_cr - DrCrEnum!
|
|
loan_id - String
|
|
original_contract_number - String
|
|
new_contract_number - String
|
|
adjustment_metadata - JSON
|
|
adjustment_created_at - DateTime!
|
|
adjustment_updated_at - DateTime!
|
|
deleted_at - DateTime
|
Example
{
"adjustment_id": 4,
"adjustment_amount": 987.65,
"adjustment_currency": "KES",
"customer_id": RawCustomersDto,
"payment_id": "4",
"related_adjustment_id": "4",
"reverses_adjustment_id": 4,
"idempotency_key": "xyz789",
"reason_code": "OPERATOR_ERROR",
"adjustment_reason": "DEPOSIT",
"adjustment_type": "REFUND",
"adjustment_status": "EFFECTED",
"posting_type": "ADJUSTMENT_POST",
"posting_tag": "STAFF_SALE_DISCOUNT",
"adjustment_note": "abc123",
"dr_cr": "DR",
"loan_id": "abc123",
"original_contract_number": "abc123",
"new_contract_number": "xyz789",
"adjustment_metadata": {},
"adjustment_created_at": "2007-12-03T10:15:30Z",
"adjustment_updated_at": "2007-12-03T10:15:30Z",
"deleted_at": "2007-12-03T10:15:30Z"
}
PaymentAdjustmentsNamespace
Fields
| Field Name | Description |
|---|---|
createPaymentAdjustment - PaymentAdjustmentsEntityType!
|
Create a new payment adjustment |
Arguments
|
|
paymentAdjustment - PaymentAdjustmentsEntityType!
|
Get payment adjustment by ID |
Arguments
|
|
paymentAdjustmentByFilters - PaymentAdjustmentsEntityType
|
Get payment adjustment by filters |
Arguments
|
|
paymentAdjustments - [PaymentAdjustmentsEntityType!]!
|
Get all payment adjustments with filters |
Arguments
|
|
paymentAdjustmentsOffset - OffsetPaginatedPaymentAdjustments!
|
Get paginated payment adjustments (offset) |
Arguments
|
|
paymentAdjustmentsCursor - CursorPaginatedPaymentAdjustments!
|
Get paginated payment adjustments (cursor) |
Arguments
|
|
updatePaymentAdjustment - PaymentAdjustmentsEntityType!
|
Update payment adjustment by ID |
Arguments
|
|
deletePaymentAdjustment - Boolean!
|
Delete payment adjustment by ID |
Arguments
|
|
effectPaymentAdjustment - PaymentAdjustmentsEntityType!
|
Effect a pending payment adjustment |
Arguments
|
|
revokePaymentAdjustment - PaymentAdjustmentsEntityType!
|
Revoke an effected payment adjustment and apply compensating financial effects |
Arguments |
|
getTotalAdjustmentsByCustomer - String!
|
Get total adjustments summary by customer |
Arguments
|
|
paymentAdjustmentCount - Float!
|
Count payment adjustments with filters |
Arguments
|
|
uploadAdjustmentsBulkDump - String!
|
Upload adjustments bulk dump CSV file |
Arguments
|
|
Example
{
"createPaymentAdjustment": PaymentAdjustmentsEntityType,
"paymentAdjustment": PaymentAdjustmentsEntityType,
"paymentAdjustmentByFilters": PaymentAdjustmentsEntityType,
"paymentAdjustments": [PaymentAdjustmentsEntityType],
"paymentAdjustmentsOffset": OffsetPaginatedPaymentAdjustments,
"paymentAdjustmentsCursor": CursorPaginatedPaymentAdjustments,
"updatePaymentAdjustment": PaymentAdjustmentsEntityType,
"deletePaymentAdjustment": true,
"effectPaymentAdjustment": PaymentAdjustmentsEntityType,
"revokePaymentAdjustment": PaymentAdjustmentsEntityType,
"getTotalAdjustmentsByCustomer": "abc123",
"paymentAdjustmentCount": 123.45,
"uploadAdjustmentsBulkDump": "xyz789"
}
PaymentChannelEnum
Description
Channel through which payment is made
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"USSD"
PaymentFrequencyEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"DAILY"
PaymentModuleNamespace
Fields
| Field Name | Description |
|---|---|
paymentOrchestrator - PaymentOrchestratorNamespace!
|
|
payments - PaymentsNamespace!
|
|
paymentAdjustments - PaymentAdjustmentsNamespace!
|
Example
{
"paymentOrchestrator": PaymentOrchestratorNamespace,
"payments": PaymentsNamespace,
"paymentAdjustments": PaymentAdjustmentsNamespace
}
PaymentOrchestratorNamespace
Fields
| Field Name | Description |
|---|---|
collectMobileMoneyPayment - PaymentProviderResultType!
|
Collect mobile money payment from customer |
Arguments
|
|
collectCardPayment - PaymentProviderResultType!
|
Collect card payment from customer |
Arguments
|
|
collectBankPayment - PaymentProviderResultType!
|
Collect bank payment from customer |
Arguments
|
|
collectCryptoPayment - PaymentProviderResultType!
|
Collect crypto payment from customer |
Arguments
|
|
sendMobileMoneyPayment - PaymentProviderResultType!
|
Send mobile money payment to customer |
Arguments
|
|
sendCardPayment - PaymentProviderResultType!
|
Send card payment to customer |
Arguments
|
|
sendBankPayment - PaymentProviderResultType!
|
Send bank payment to customer |
Arguments
|
|
sendCryptoPayment - PaymentProviderResultType!
|
Send crypto payment to customer |
Arguments
|
|
Example
{
"collectMobileMoneyPayment": PaymentProviderResultType,
"collectCardPayment": PaymentProviderResultType,
"collectBankPayment": PaymentProviderResultType,
"collectCryptoPayment": PaymentProviderResultType,
"sendMobileMoneyPayment": PaymentProviderResultType,
"sendCardPayment": PaymentProviderResultType,
"sendBankPayment": PaymentProviderResultType,
"sendCryptoPayment": PaymentProviderResultType
}
PaymentProviderEnum
Description
Payment provider type
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"MPESA"
PaymentProviderResultType
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
|
transactionId - String
|
|
providerReference - String
|
|
status - PaymentStatus!
|
|
message - String
|
|
amount - Float
|
|
rawResponse - JSONObject
|
|
metadata - JSONObject
|
Example
{
"success": false,
"transactionId": "xyz789",
"providerReference": "xyz789",
"status": "PENDING",
"message": "abc123",
"amount": 123.45,
"rawResponse": {},
"metadata": {}
}
PaymentReconciliationSourceEnum
Description
Source of payment reconciliation identity
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"SYSTEM"
PaymentReconciliationStatusEnum
Description
Payment reconciliation status
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
PaymentRevocationReasonCodeEnum
Description
Reason code used for payment revocation and undo-revocation
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"OPERATOR_ERROR"
PaymentStatementEntryDto
Fields
| Field Name | Description |
|---|---|
source - TransactionTypeEnum!
|
|
totalPaidPrevious - Float!
|
|
totalPaidNew - Float!
|
|
amount - Float!
|
|
paymentRef - String
|
|
phoneNo - String
|
|
transactionDate - DateTime!
|
|
createdAt - DateTime!
|
|
tag - StatementTagEnum!
|
|
paymentId - String
|
|
payment - PaymentsEntityType
|
|
adjustment - PaymentAdjustmentsEntityType
|
Example
{
"source": "PAYMENT",
"totalPaidPrevious": 987.65,
"totalPaidNew": 123.45,
"amount": 987.65,
"paymentRef": "abc123",
"phoneNo": "abc123",
"transactionDate": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"tag": "CR",
"paymentId": "abc123",
"payment": PaymentsEntityType,
"adjustment": PaymentAdjustmentsEntityType
}
PaymentStatementFilterInput
Description
Filter input for payment statement queries
Fields
| Input Field | Description |
|---|---|
source - TransactionTypeEnum
|
|
transactionDateFrom - DateTime
|
|
transactionDateTo - DateTime
|
|
paymentRef - String
|
Filter by payment provider reference (exact match) |
Example
{
"source": "PAYMENT",
"transactionDateFrom": "2007-12-03T10:15:30Z",
"transactionDateTo": "2007-12-03T10:15:30Z",
"paymentRef": "xyz789"
}
PaymentStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
PaymentStatusEnum
Description
Status of payment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
PaymentTypeEnum
Description
Type of payment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PAYMENT"
PaymentsEntityType
Fields
| Field Name | Description |
|---|---|
payment_id - ID!
|
Unique payment identifier |
customer_id - RawCustomersDto
|
|
wallet_id - RawCustomerWalletsDto
|
|
payment_provider - PaymentProviderEnum!
|
Payment service provider |
payment_provider_reference - String
|
PSP unique transaction reference |
payment_account_reference - String
|
Optional business/account reference used during payment |
payment_type - PaymentTypeEnum!
|
Payment type (e.g., PAYMENT, REFUND, CHARGEBACK) |
payment_amount - Float!
|
Payment amount (decimal precision 2) |
payment_currency - CurrencyEnum!
|
Payment currency |
payment_channel - PaymentChannelEnum!
|
Payment channel (e.g., APP, USSD, WEB) |
payment_status - PaymentStatusEnum!
|
Payment status (e.g., PENDING, SUCCESS, FAILED) |
payment_reconciliation_status - PaymentReconciliationStatusEnum!
|
Reconciliation status against internal records |
payment_reconciliation_source - PaymentReconciliationSourceEnum!
|
Source of the current reconciliation identity |
payment_transaction_date - DateTime!
|
Payment transaction timestamp |
payment_completed_at - DateTime
|
Payment completion timestamp |
payment_settled_at - DateTime
|
Payment settlement timestamp |
payment_phone_number - String
|
The originating phone number (e.g. MSISDN) |
payment_description - String
|
Optional payment description |
payment_raw - JSON
|
Full PSP payload or import row data (jsonb) |
payment_created_by - String
|
User or system that created this payment record |
payment_created_at - DateTime!
|
Payment record creation timestamp |
payment_updated_at - DateTime!
|
Payment record last update timestamp |
Example
{
"payment_id": 4,
"customer_id": RawCustomersDto,
"wallet_id": RawCustomerWalletsDto,
"payment_provider": "MPESA",
"payment_provider_reference": "xyz789",
"payment_account_reference": "xyz789",
"payment_type": "PAYMENT",
"payment_amount": 987.65,
"payment_currency": "KES",
"payment_channel": "USSD",
"payment_status": "PENDING",
"payment_reconciliation_status": "PENDING",
"payment_reconciliation_source": "SYSTEM",
"payment_transaction_date": "2007-12-03T10:15:30Z",
"payment_completed_at": "2007-12-03T10:15:30Z",
"payment_settled_at": "2007-12-03T10:15:30Z",
"payment_phone_number": "xyz789",
"payment_description": "xyz789",
"payment_raw": {},
"payment_created_by": "xyz789",
"payment_created_at": "2007-12-03T10:15:30Z",
"payment_updated_at": "2007-12-03T10:15:30Z"
}
PaymentsEntityUpdateInput
Fields
| Input Field | Description |
|---|---|
customer_id - String
|
Customer ID |
wallet_id - String
|
Wallet ID |
payment_provider - PaymentProviderEnum
|
Payment service provider |
payment_provider_reference - String
|
PSP unique transaction reference (required as per unique index) |
payment_account_reference - String
|
Optional business/account reference used during payment |
payment_type - PaymentTypeEnum
|
Payment type (e.g., PAYMENT, REFUND, CHARGEBACK) |
payment_amount - Float
|
Payment amount (decimal precision 15,2) |
payment_currency - CurrencyEnum
|
Payment currency (Defaults to KES) |
payment_channel - PaymentChannelEnum
|
Payment channel (e.g., APP, USSD, WEB) |
payment_status - PaymentStatusEnum
|
Payment status (Defaults to PENDING) |
payment_reconciliation_status - PaymentReconciliationStatusEnum
|
Reconciliation status (Defaults to NOT_MATCHED) |
payment_transaction_date - String
|
The date the transaction occurred |
payment_settled_at - String
|
Payment settlement ISO timestamp |
payment_phone_number - String
|
The originating phone number (e.g. MSISDN) |
payment_description - String
|
Optional payment description |
payment_raw - JSON
|
Full PSP payload or import row data (jsonb) |
Example
{
"customer_id": "abc123",
"wallet_id": "xyz789",
"payment_provider": "MPESA",
"payment_provider_reference": "xyz789",
"payment_account_reference": "abc123",
"payment_type": "PAYMENT",
"payment_amount": 987.65,
"payment_currency": "KES",
"payment_channel": "USSD",
"payment_status": "PENDING",
"payment_reconciliation_status": "PENDING",
"payment_transaction_date": "abc123",
"payment_settled_at": "abc123",
"payment_phone_number": "abc123",
"payment_description": "xyz789",
"payment_raw": {}
}
PaymentsFilterInput
Fields
| Input Field | Description |
|---|---|
payment_id - ID
|
|
customer_id - ID
|
|
wallet_id - ID
|
|
payment_provider - PaymentProviderEnum
|
|
payment_provider_reference - String
|
|
payment_account_reference - String
|
|
payment_type - PaymentTypeEnum
|
|
payment_amount - Float
|
|
payment_currency - CurrencyEnum
|
|
payment_channel - PaymentChannelEnum
|
|
payment_status - PaymentStatusEnum
|
|
payment_reconciliation_status - PaymentReconciliationStatusEnum
|
|
payment_reconciliation_source - PaymentReconciliationSourceEnum
|
|
payment_transaction_date - DateTime
|
|
payment_completed_at - DateTime
|
|
payment_settled_at - DateTime
|
|
payment_phone_number - String
|
|
payment_description - String
|
|
payment_created_by - String
|
Example
{
"payment_id": "4",
"customer_id": 4,
"wallet_id": "4",
"payment_provider": "MPESA",
"payment_provider_reference": "abc123",
"payment_account_reference": "abc123",
"payment_type": "PAYMENT",
"payment_amount": 123.45,
"payment_currency": "KES",
"payment_channel": "USSD",
"payment_status": "PENDING",
"payment_reconciliation_status": "PENDING",
"payment_reconciliation_source": "SYSTEM",
"payment_transaction_date": "2007-12-03T10:15:30Z",
"payment_completed_at": "2007-12-03T10:15:30Z",
"payment_settled_at": "2007-12-03T10:15:30Z",
"payment_phone_number": "xyz789",
"payment_description": "xyz789",
"payment_created_by": "xyz789"
}
PaymentsNamespace
Fields
| Field Name | Description |
|---|---|
createPayment - PaymentsEntityType!
|
Create a new payment record |
Arguments
|
|
createRawPayment - PaymentsEntityType!
|
Create a raw payment record |
Arguments
|
|
getPaymentById - PaymentsEntityType!
|
Get payment by ID |
Arguments
|
|
payments - [PaymentsEntityType!]!
|
Get all payments with filters |
Arguments
|
|
paymentByFilters - PaymentsEntityType
|
Get payment by filters |
Arguments
|
|
paymentsWithCursorPagination - CursorPaginatedPayments!
|
Get paginated payments (cursor) |
Arguments
|
|
completePayment - PaymentsEntityType!
|
Complete a payment |
Arguments
|
|
failPayment - PaymentsEntityType!
|
Fail a payment |
reversePayment - PaymentsEntityType!
|
Reverse a payment |
updatePayment - PaymentsEntityType!
|
Update payment by ID |
Arguments
|
|
updateManyPayments - Float!
|
Update multiple payments |
Arguments
|
|
manuallyReconcilePayment - PaymentsEntityType!
|
Manually reconcile an unmatched payment to a customer |
Arguments
|
|
revokePaymentByAdjustment - PaymentAdjustmentsEntityType!
|
Create an immutable payment revocation adjustment and apply its compensating business effects |
Arguments
|
|
undoPaymentRevocation - PaymentAdjustmentsEntityType!
|
Undo a previously effected payment revocation by targeting the revocation adjustment |
Arguments
|
|
allocatePaymentToRepairSale - RepairAllocationResultType!
|
Manually allocate a payment to a specific REPAIR sale. REPAIR sales are never auto-allocated by the processor — this mutation is the only allocation path for repair payments. |
Arguments |
|
correctCashSaleOverAllocations - CorrectCashSaleOverAllocationsResultType!
|
Admin: detect and correct cash/repair sales whose total allocations exceed final_sale_price (over-allocation from staggered payments bug). Always run with dryRun: true first to inspect candidates. The excess is reversed, the customer wallet credited, and a reconciliation job enqueued so freed funds flow to other outstanding sales first. |
Arguments |
|
reallocateRepairSalesToOutstanding - ReallocateRepairSalesResultType!
|
Admin: claw back the full payment allocation from the supplied REPAIR sale IDs and re-channel the freed funds to the customer's outstanding CASH / CREDIT sales via the normal reconciliation waterfall. Always run with dryRun: true first to inspect candidates before applying. |
Arguments
|
|
deletePayment - Boolean!
|
Delete payment by ID |
Arguments
|
|
deleteManyPayments - Float!
|
Delete multiple payments |
Arguments
|
|
paymentCount - Float!
|
Count payments with filters |
Arguments
|
|
uploadMpesaBulkDump - String!
|
Upload M-Pesa bulk dump Excel file |
Arguments
|
|
Example
{
"createPayment": PaymentsEntityType,
"createRawPayment": PaymentsEntityType,
"getPaymentById": PaymentsEntityType,
"payments": [PaymentsEntityType],
"paymentByFilters": PaymentsEntityType,
"paymentsWithCursorPagination": CursorPaginatedPayments,
"completePayment": PaymentsEntityType,
"failPayment": PaymentsEntityType,
"reversePayment": PaymentsEntityType,
"updatePayment": PaymentsEntityType,
"updateManyPayments": 987.65,
"manuallyReconcilePayment": PaymentsEntityType,
"revokePaymentByAdjustment": PaymentAdjustmentsEntityType,
"undoPaymentRevocation": PaymentAdjustmentsEntityType,
"allocatePaymentToRepairSale": RepairAllocationResultType,
"correctCashSaleOverAllocations": CorrectCashSaleOverAllocationsResultType,
"reallocateRepairSalesToOutstanding": ReallocateRepairSalesResultType,
"deletePayment": true,
"deleteManyPayments": 987.65,
"paymentCount": 123.45,
"uploadMpesaBulkDump": "abc123"
}
Inventory & Products
CategoryFilterInput
Description
Filter input for querying categories
Example
{
"name": "xyz789",
"slug": "abc123",
"parent_category_id": "abc123",
"level": 123,
"is_active": true
}
CategoryObjectType
Fields
| Field Name | Description |
|---|---|
category_id - ID!
|
Unique category identifier |
name - String!
|
Category name |
slug - String!
|
URL-friendly name |
description - String
|
Category description |
icon_url - String
|
Icon image URL |
image_url - String
|
Banner image URL |
required_attributes - JSON
|
Required attributes for this category |
sku_attributes - JSON
|
SKU attributes for this category |
parent_category_id - String
|
Parent category ID |
level - Float!
|
Hierarchy level (0, 1, or 2) |
path - String
|
Full path (materialized) |
sort_order - Float
|
Display order |
is_active - Boolean!
|
Is category visible? |
meta_title - String
|
SEO title |
meta_description - String
|
SEO description |
created_at - DateTime!
|
Creation timestamp |
updated_at - DateTime!
|
Last update timestamp |
Example
{
"category_id": "4",
"name": "abc123",
"slug": "abc123",
"description": "xyz789",
"icon_url": "xyz789",
"image_url": "abc123",
"required_attributes": {},
"sku_attributes": {},
"parent_category_id": "xyz789",
"level": 123.45,
"path": "xyz789",
"sort_order": 123.45,
"is_active": false,
"meta_title": "abc123",
"meta_description": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
FlashSaleFilterInput
Description
Filter input for querying flash sales
Fields
| Input Field | Description |
|---|---|
title - String
|
Filter by title |
slug - String
|
Filter by slug |
status - FlashSaleStatusEnum
|
Filter by status |
is_featured - Boolean
|
Filter by featured status |
countdown_display - Boolean
|
Filter by countdown display |
Example
{
"title": "abc123",
"slug": "xyz789",
"status": "SCHEDULED",
"is_featured": true,
"countdown_display": false
}
FlashSaleItemFilterInput
Description
Filter input for querying flash sale items
Example
{
"flash_sale_id": "xyz789",
"seller_catalog_id": "abc123",
"product_id": "abc123",
"sku_id": "abc123",
"is_featured": false,
"badge_text": "xyz789"
}
FlashSaleItemObjectType
Fields
| Field Name | Description |
|---|---|
flash_sale_item_id - ID!
|
Unique flash sale item identifier |
flash_sale_id - String!
|
Flash sale ID |
seller_catalog_id - String!
|
Product listing |
product_id - String!
|
Product reference |
sku_id - String!
|
SKU reference |
original_price - Float!
|
Regular price |
flash_sale_price - Float!
|
Sale price |
discount_percentage - Float!
|
Discount % |
stock_allocated - Int!
|
Units allocated |
stock_sold - Int!
|
Units sold |
stock_remaining - Int!
|
Units remaining |
max_per_customer - Int
|
Per customer limit |
display_priority - Int!
|
Display order |
is_featured - Boolean!
|
Featured deal? |
badge_text - String
|
Badge text |
created_at - DateTime!
|
Added timestamp |
Example
{
"flash_sale_item_id": 4,
"flash_sale_id": "xyz789",
"seller_catalog_id": "xyz789",
"product_id": "xyz789",
"sku_id": "abc123",
"original_price": 987.65,
"flash_sale_price": 987.65,
"discount_percentage": 123.45,
"stock_allocated": 123,
"stock_sold": 123,
"stock_remaining": 123,
"max_per_customer": 987,
"display_priority": 987,
"is_featured": false,
"badge_text": "abc123",
"created_at": "2007-12-03T10:15:30Z"
}
FlashSaleItemsNamespace
Fields
| Field Name | Description |
|---|---|
createFlashSaleItem - FlashSaleItemObjectType!
|
|
Arguments
|
|
flashSaleItem - FlashSaleItemObjectType!
|
|
Arguments
|
|
flashSaleItems - [FlashSaleItemObjectType!]!
|
|
Arguments
|
|
flashSaleItemsWithOffsetPagination - OffsetPaginatedFlashSaleItems!
|
|
Arguments
|
|
flashSaleItemsWithCursorPagination - CursorPaginatedFlashSaleItems!
|
|
Arguments
|
|
updateFlashSaleItem - FlashSaleItemObjectType!
|
|
Arguments
|
|
deleteFlashSaleItem - Boolean!
|
|
Arguments
|
|
flashSaleItemsByFlashSale - [FlashSaleItemObjectType!]!
|
|
Arguments
|
|
activeFlashSaleItems - [FlashSaleItemObjectType!]!
|
|
topDiscountedItems - [FlashSaleItemObjectType!]!
|
|
Arguments
|
|
updateFlashSaleItemDiscount - FlashSaleItemObjectType!
|
|
Example
{
"createFlashSaleItem": FlashSaleItemObjectType,
"flashSaleItem": FlashSaleItemObjectType,
"flashSaleItems": [FlashSaleItemObjectType],
"flashSaleItemsWithOffsetPagination": OffsetPaginatedFlashSaleItems,
"flashSaleItemsWithCursorPagination": CursorPaginatedFlashSaleItems,
"updateFlashSaleItem": FlashSaleItemObjectType,
"deleteFlashSaleItem": true,
"flashSaleItemsByFlashSale": [FlashSaleItemObjectType],
"activeFlashSaleItems": [FlashSaleItemObjectType],
"topDiscountedItems": [FlashSaleItemObjectType],
"updateFlashSaleItemDiscount": FlashSaleItemObjectType
}
FlashSaleObjectType
Fields
| Field Name | Description |
|---|---|
flash_sale_id - ID!
|
Unique flash sale identifier |
title - String!
|
Sale name |
slug - String
|
URL identifier |
description - String
|
Sale details |
start_date - DateTime!
|
Start time |
end_date - DateTime!
|
End time |
status - FlashSaleStatusEnum!
|
Status |
max_quantity - Int
|
Total items cap |
sold_quantity - Int!
|
Items sold |
min_discount_percentage - Float
|
Min discount |
is_featured - Boolean!
|
Featured? |
banner_image - String
|
Banner URL |
icon_url - String
|
Icon URL |
countdown_display - Boolean!
|
Show countdown? |
priority - Int!
|
Display order |
participating_sellers - [String!]
|
Seller IDs |
performance_metrics - JSON!
|
Performance data |
meta_title - String
|
SEO title |
meta_description - String
|
SEO description |
created_at - DateTime!
|
Created timestamp |
updated_at - DateTime!
|
Updated timestamp |
Example
{
"flash_sale_id": 4,
"title": "xyz789",
"slug": "xyz789",
"description": "xyz789",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 123,
"sold_quantity": 987,
"min_discount_percentage": 987.65,
"is_featured": true,
"banner_image": "xyz789",
"icon_url": "abc123",
"countdown_display": false,
"priority": 123,
"participating_sellers": ["xyz789"],
"performance_metrics": {},
"meta_title": "xyz789",
"meta_description": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
FlashSaleStatusEnum
Description
Status of flash sale
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"SCHEDULED"
FlashSalesNamespace
Fields
| Field Name | Description |
|---|---|
createFlashSale - FlashSaleObjectType!
|
|
Arguments
|
|
flashSale - FlashSaleObjectType!
|
|
Arguments
|
|
flashSales - [FlashSaleObjectType!]!
|
|
Arguments
|
|
flashSalesWithOffsetPagination - OffsetPaginatedFlashSales!
|
|
Arguments
|
|
flashSalesWithCursorPagination - CursorPaginatedFlashSales!
|
|
Arguments
|
|
updateFlashSale - FlashSaleObjectType!
|
|
Arguments
|
|
deleteFlashSale - Boolean!
|
|
Arguments
|
|
activeFlashSales - [FlashSaleObjectType!]!
|
|
upcomingFlashSales - [FlashSaleObjectType!]!
|
|
activateFlashSale - FlashSaleObjectType!
|
|
endFlashSale - FlashSaleObjectType!
|
|
Example
{
"createFlashSale": FlashSaleObjectType,
"flashSale": FlashSaleObjectType,
"flashSales": [FlashSaleObjectType],
"flashSalesWithOffsetPagination": OffsetPaginatedFlashSales,
"flashSalesWithCursorPagination": CursorPaginatedFlashSales,
"updateFlashSale": FlashSaleObjectType,
"deleteFlashSale": true,
"activeFlashSales": [FlashSaleObjectType],
"upcomingFlashSales": [FlashSaleObjectType],
"activateFlashSale": FlashSaleObjectType,
"endFlashSale": FlashSaleObjectType
}
InventoryAllocationFilterInput
Example
{
"inventory_allocation_id": "4",
"order_item_id": 4,
"inventory_id": "4",
"quantity_allocated": 123.45,
"allocation_status": "RESERVED",
"allocation_date": "2007-12-03T10:15:30Z",
"expiry_date": "2007-12-03T10:15:30Z"
}
InventoryAllocationObjectType
Fields
| Field Name | Description |
|---|---|
inventory_allocation_id - ID!
|
|
order_item_id - ID!
|
|
inventory_id - ID!
|
|
quantity_allocated - Float!
|
|
allocation_status - AllocationStatusEnum!
|
|
allocation_date - DateTime!
|
|
expiry_date - DateTime
|
|
metadata - JSON
|
|
order_item - OrderItemObjectType
|
|
inventory - InventoryObjectType
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
Example
{
"inventory_allocation_id": "4",
"order_item_id": 4,
"inventory_id": 4,
"quantity_allocated": 123.45,
"allocation_status": "RESERVED",
"allocation_date": "2007-12-03T10:15:30Z",
"expiry_date": "2007-12-03T10:15:30Z",
"metadata": {},
"order_item": OrderItemObjectType,
"inventory": InventoryObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
InventoryCoordinatesInput
InventoryCoordinatesObjectType
InventoryCreationResult
Types
| Union Types |
|---|
Example
InventoryObjectType
InventoryFilterInput
Description
Filter input for querying inventory
Fields
| Input Field | Description |
|---|---|
product_id - String
|
Filter by product ID |
sku_id - String
|
Filter by SKU ID |
sku_name - String
|
Filter by SKU Name |
condition_id - String
|
Filter by condition ID |
seller_catalog_id - String
|
Filter by seller catalog ID |
seller_id - String
|
Filter by seller ID |
serial_number - String
|
Filter by serial number |
physical_state - PhysicalState
|
Filter by physical state |
mdm_enrollment - MdmEnrollmentStatusEnum
|
Filter by canonical MDM enrollment status |
stock_status_type - StockStatusTypeEnum
|
Filter by stock status type |
stock_status_name - StockStatusNameEnum
|
Filter by stock status name |
stock_origin - StockOriginEnum
|
Filter by stock origin |
stock_type - StockTypeEnum
|
Filter by stock type |
b2b - Boolean
|
Filter by B2B stock flag |
contract_id - String
|
Filter by contract ID |
batch_number - String
|
Filter by batch number |
location_id - String
|
Filter by location ID |
supplier_name - String
|
Filter by supplier name |
supplier_order_reference - String
|
Filter by supplier order reference |
customer_id - String
|
Filter by customer ID |
sale_id - String
|
Filter by sale ID |
qc_status - QCStatus
|
Quality control status |
qc_status_type - QCStatusTypeEnum
|
QC status type classification |
mdm_status_provider - MdmProviderEnum
|
Filter by mdm_status->>'mdm_provider' (JSONB) |
mdm_status_device_id - String
|
Filter by mdm_status->>'device_id' (JSONB, partial-match) |
stock_status_types - [StockStatusTypeEnum!]
|
Filter by any of stock status types |
stock_status_names - [StockStatusNameEnum!]
|
Filter by any of stock status names |
qc_status_types - [QCStatusTypeEnum!]
|
Filter by any of QC status types |
qc_statuses - [QCStatus!]
|
Filter by any of QC statuses |
mdm_enrollments - [MdmEnrollmentStatusEnum!]
|
Filter by any of MDM enrollment statuses |
mdm_enrollments_not_in - [MdmEnrollmentStatusEnum!]
|
Exclude these MDM enrollment statuses (NOT IN) |
location_type - LocationTypeEnum
|
Filter by location type (joined via inventory.location) |
location_types - [LocationTypeEnum!]
|
Filter by any of location types (joined via inventory.location) |
updated_at_from - DateTime
|
Filter by updated_at >= this date |
updated_at_to - DateTime
|
Filter by updated_at <= this date |
or - [InventoryFilterInput!]
|
Array of filter clauses combined with OR. Each clause is a complete AND filter. |
Example
{
"product_id": "xyz789",
"sku_id": "xyz789",
"sku_name": "abc123",
"condition_id": "abc123",
"seller_catalog_id": "xyz789",
"seller_id": "abc123",
"serial_number": "abc123",
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": true,
"contract_id": "xyz789",
"batch_number": "abc123",
"location_id": "xyz789",
"supplier_name": "abc123",
"supplier_order_reference": "xyz789",
"customer_id": "abc123",
"sale_id": "abc123",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"mdm_status_provider": "NUOVOPAY",
"mdm_status_device_id": "abc123",
"stock_status_types": ["INBOUND"],
"stock_status_names": ["ORDERED"],
"qc_status_types": ["INBOUND"],
"qc_statuses": ["PENDING"],
"mdm_enrollments": ["PENDING"],
"mdm_enrollments_not_in": ["PENDING"],
"location_type": "TRANSIT_INBOUND",
"location_types": ["TRANSIT_INBOUND"],
"updated_at_from": "2007-12-03T10:15:30Z",
"updated_at_to": "2007-12-03T10:15:30Z",
"or": [InventoryFilterInput]
}
InventoryLocationDetailsInput
Example
{
"country": "xyz789",
"county": "xyz789",
"sub_county": "xyz789",
"ward": "xyz789",
"town": "xyz789",
"landmark": "xyz789",
"gps_coordinates": InventoryCoordinatesInput
}
InventoryLocationDetailsObjectType
Example
{
"country": "xyz789",
"county": "abc123",
"sub_county": "xyz789",
"ward": "xyz789",
"town": "xyz789",
"landmark": "abc123",
"gps_coordinates": InventoryCoordinatesObjectType
}
InventoryLocationFilterInput
Description
Filter input for querying inventory locations
Fields
| Input Field | Description |
|---|---|
location_name - String
|
Filter by location name |
location_type - LocationTypeEnum
|
Filter by location type |
location_code - String
|
Filter by location code |
city - String
|
Filter by city |
region - String
|
Filter by region |
user_id - String
|
Filter by manager ID |
is_active - Boolean
|
Filter by active status |
seller_id - String
|
Filter by seller ID |
Example
{
"location_name": "abc123",
"location_type": "TRANSIT_INBOUND",
"location_code": "abc123",
"city": "abc123",
"region": "xyz789",
"user_id": "abc123",
"is_active": true,
"seller_id": "abc123"
}
InventoryLocationObjectType
Fields
| Field Name | Description |
|---|---|
inventory_location_id - ID!
|
Unique inventory location identifier |
location_name - String!
|
Location name |
location_type - LocationTypeEnum
|
Type of location |
location_code - String
|
Short code |
address - String
|
Full address |
city - String
|
City |
region - String
|
Region/State |
coordinates - InventoryCoordinatesObjectType
|
GPS coordinates |
location_details - InventoryLocationDetailsObjectType
|
Structured location details |
user_id - String
|
Associated agent profile ID |
manager_id - String
|
Deprecated alias for user_id Use user_id |
capacity - Int!
|
Maximum devices |
current_stock - Int!
|
Current device count |
is_active - Boolean!
|
Is location active? |
operating_hours - JSON
|
Business hours |
seller_id - String
|
Seller who owns location (null = platform) |
created_at - DateTime!
|
Created timestamp |
updated_at - DateTime!
|
Updated timestamp |
Example
{
"inventory_location_id": 4,
"location_name": "xyz789",
"location_type": "TRANSIT_INBOUND",
"location_code": "abc123",
"address": "abc123",
"city": "abc123",
"region": "abc123",
"coordinates": InventoryCoordinatesObjectType,
"location_details": InventoryLocationDetailsObjectType,
"user_id": "xyz789",
"manager_id": "abc123",
"capacity": 987,
"current_stock": 123,
"is_active": false,
"operating_hours": {},
"seller_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
InventoryLocationsNamespace
Fields
| Field Name | Description |
|---|---|
createInventoryLocation - InventoryLocationObjectType!
|
|
Arguments
|
|
inventoryLocation - InventoryLocationObjectType!
|
|
Arguments
|
|
inventoryLocations - [InventoryLocationObjectType!]!
|
|
Arguments
|
|
updateInventoryLocation - InventoryLocationObjectType!
|
|
Arguments
|
|
deleteInventoryLocation - Boolean!
|
|
Arguments
|
|
Example
{
"createInventoryLocation": InventoryLocationObjectType,
"inventoryLocation": InventoryLocationObjectType,
"inventoryLocations": [InventoryLocationObjectType],
"updateInventoryLocation": InventoryLocationObjectType,
"deleteInventoryLocation": true
}
InventoryModuleNamespace
Fields
| Field Name | Description |
|---|---|
categories - CategoriesNamespace!
|
|
conditions - ConditionsNamespace!
|
|
flashSales - FlashSalesNamespace!
|
|
flashSaleItems - FlashSaleItemsNamespace!
|
|
inventory - InventoryNamespace!
|
|
inventoryLocations - InventoryLocationsNamespace!
|
|
productOffers - ProductOffersNamespace!
|
|
products - ProductsNamespace!
|
|
repair - RepairNamespace!
|
|
sellerCatalog - SellerCatalogNamespace!
|
|
sellers - SellersNamespace!
|
|
skus - SkusNamespace!
|
|
skuAgentWhitelists - SkuAgentWhitelistsNamespace!
|
Example
{
"categories": CategoriesNamespace,
"conditions": ConditionsNamespace,
"flashSales": FlashSalesNamespace,
"flashSaleItems": FlashSaleItemsNamespace,
"inventory": InventoryNamespace,
"inventoryLocations": InventoryLocationsNamespace,
"productOffers": ProductOffersNamespace,
"products": ProductsNamespace,
"repair": RepairNamespace,
"sellerCatalog": SellerCatalogNamespace,
"sellers": SellersNamespace,
"skus": SkusNamespace,
"skuAgentWhitelists": SkuAgentWhitelistsNamespace
}
InventoryNamespace
Fields
| Field Name | Description |
|---|---|
createInventory - InventoryCreationResult!
|
|
Arguments
|
|
inventory - InventoryObjectType!
|
|
Arguments
|
|
inventoryItems - [InventoryObjectType!]!
|
|
Arguments
|
|
inventoryWithOffsetPagination - OffsetPaginatedInventory!
|
|
Arguments
|
|
inventoryWithCursorPagination - CursorPaginatedInventory!
|
|
Arguments
|
|
updateInventory - InventoryObjectType!
|
|
Arguments
|
|
deleteInventory - Boolean!
|
|
Arguments
|
|
inventoryCount - Float!
|
|
Arguments
|
|
inventoryBySerialNumber - InventoryObjectType
|
|
Arguments
|
|
inventoryBySeller - [InventoryObjectType!]!
|
|
Arguments
|
|
inventoryByLocation - [InventoryObjectType!]!
|
|
Arguments
|
|
availableInventory - [InventoryObjectType!]!
|
|
activeLoanDevices - [InventoryObjectType!]!
|
|
inventoryStats - InventoryStats!
|
|
updateInventoryPhysicalState - InventoryObjectType!
|
|
Arguments
|
|
updateInventoryMdmEnrollment - InventoryObjectType!
|
|
Arguments
|
|
updateInventoryEnrollmentStatus - InventoryObjectType!
|
|
Arguments
|
|
assignInventoryToContract - InventoryObjectType!
|
|
moveInventoryToLocation - InventoryObjectType!
|
|
getConditionFromQCReport - QCReportWithCondition!
|
|
Arguments
|
|
updateInventoryWithQCReport - InventoryObjectType!
|
|
Arguments |
|
Example
{
"createInventory": InventoryObjectType,
"inventory": InventoryObjectType,
"inventoryItems": [InventoryObjectType],
"inventoryWithOffsetPagination": OffsetPaginatedInventory,
"inventoryWithCursorPagination": CursorPaginatedInventory,
"updateInventory": InventoryObjectType,
"deleteInventory": true,
"inventoryCount": 123.45,
"inventoryBySerialNumber": InventoryObjectType,
"inventoryBySeller": [InventoryObjectType],
"inventoryByLocation": [InventoryObjectType],
"availableInventory": [InventoryObjectType],
"activeLoanDevices": [InventoryObjectType],
"inventoryStats": InventoryStats,
"updateInventoryPhysicalState": InventoryObjectType,
"updateInventoryMdmEnrollment": InventoryObjectType,
"updateInventoryEnrollmentStatus": InventoryObjectType,
"assignInventoryToContract": InventoryObjectType,
"moveInventoryToLocation": InventoryObjectType,
"getConditionFromQCReport": QCReportWithCondition,
"updateInventoryWithQCReport": InventoryObjectType
}
InventoryObjectType
Fields
| Field Name | Description |
|---|---|
inventory_id - ID!
|
Unique inventory identifier |
product_id - String!
|
Which product (model) |
sku_id - String
|
Which SKU (variant) |
condition_id - String
|
Condition grade |
seller_catalog_id - String
|
Listing sold from |
seller_id - String!
|
Which seller |
serial_number - String!
|
IMEI/SN - unique! |
identifiers - JSON
|
Additional identifiers |
physical_state - PhysicalState!
|
Physical/marketplace state |
mdm_enrollment - MdmEnrollmentStatusEnum
|
Canonical MDM enrollment status |
enrollment_status - MdmEnrollmentStatusEnum
|
Deprecated alias for mdm_enrollment Use mdm_enrollment |
stock_status_type - StockStatusTypeEnum
|
High-level stock status type |
stock_status_name - StockStatusNameEnum
|
Detailed stock status name |
stock_origin - StockOriginEnum
|
Origin of stock |
stock_type - StockTypeEnum
|
Ownership stock type |
b2b - Boolean!
|
Whether inventory is B2B stock |
qc_report - QCReportType
|
Quality control details |
qc_report_link - String
|
QC report file URL |
qc_status - QCStatus!
|
Quality control status |
qc_status_type - QCStatusTypeEnum
|
QC status type classification (Inbound, Repair, Reverse) |
unit_cost - Float!
|
What seller paid (USD) |
contract_id - String
|
Active loan/contract |
mdm_status - JSON!
|
Device lock/MDM info |
batch_number - String
|
Procurement batch |
location_id - String
|
Current location |
inspection_report - String
|
Detailed inspection report |
warranty - JSON
|
Warranty information |
acquisition_date - DateTime
|
When seller got device |
first_sale_date - DateTime
|
First sale date |
supplier_name - String
|
Supplier name |
supplier_code - String
|
Supplier code |
supplier_order_reference - String
|
Supplier order reference |
customer_id - String
|
Current customer |
sale_id - String
|
Current sale transaction |
created_at - DateTime
|
Created timestamp |
updated_at - DateTime!
|
Updated timestamp |
seller - SellerObjectType
|
Seller for seller_id |
sku - SkuObjectType
|
SKU for sku_id |
product - ProductObjectType
|
Product for product_id |
condition - ConditionObjectType
|
Condition for condition_id |
sellerCatalog - SellerCatalogObjectType
|
Seller catalog listing for seller_catalog_id |
location - InventoryLocationObjectType
|
Location for location_id |
Example
{
"inventory_id": 4,
"product_id": "abc123",
"sku_id": "xyz789",
"condition_id": "xyz789",
"seller_catalog_id": "xyz789",
"seller_id": "xyz789",
"serial_number": "xyz789",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": false,
"qc_report": QCReportType,
"qc_report_link": "abc123",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 987.65,
"contract_id": "abc123",
"mdm_status": {},
"batch_number": "xyz789",
"location_id": "xyz789",
"inspection_report": "abc123",
"warranty": {},
"acquisition_date": "2007-12-03T10:15:30Z",
"first_sale_date": "2007-12-03T10:15:30Z",
"supplier_name": "xyz789",
"supplier_code": "abc123",
"supplier_order_reference": "xyz789",
"customer_id": "abc123",
"sale_id": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType,
"condition": ConditionObjectType,
"sellerCatalog": SellerCatalogObjectType,
"location": InventoryLocationObjectType
}
InventoryStats
InventoryUiConfigType
Description
Typed inventory UI config payload
Fields
| Field Name | Description |
|---|---|
stockTypes - [EnumOptionType!]!
|
Available stock type options |
mdmEnrollments - [EnumOptionType!]!
|
Available MDM enrollment options |
stockStatusTypes - [EnumOptionType!]!
|
Available stock status type options |
stockStatusNames - [EnumOptionType!]!
|
Available stock status name options |
stockStatusTypeToNames - JSON!
|
Mapping of stock_status_type to allowed stock_status_name values |
locationTypes - [EnumOptionType!]!
|
Available location type options |
stockOrigins - [EnumOptionType!]!
|
Available stock origin options |
raw - JSON!
|
Raw merged inventory config payload from category inventory |
Example
{
"stockTypes": [EnumOptionType],
"mdmEnrollments": [EnumOptionType],
"stockStatusTypes": [EnumOptionType],
"stockStatusNames": [EnumOptionType],
"stockStatusTypeToNames": {},
"locationTypes": [EnumOptionType],
"stockOrigins": [EnumOptionType],
"raw": {}
}
ProductApprovalStatusEnum
Description
Approval status for products and SKUs
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"APPROVED"
ProductFilterInput
Description
Filter input for querying products
Fields
| Input Field | Description |
|---|---|
name - String
|
Filter by product name |
slug - String
|
Filter by slug |
brand - String
|
Filter by brand |
model - String
|
Filter by model |
category_id - String
|
Filter by category ID |
is_active - Boolean
|
Filter by active status |
approval_status - ProductApprovalStatusEnum
|
Filter by approval status |
submitted_by_seller_id - String
|
Filter by submitting seller ID |
Example
{
"name": "xyz789",
"slug": "abc123",
"brand": "xyz789",
"model": "abc123",
"category_id": "abc123",
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123"
}
ProductObjectType
Fields
| Field Name | Description |
|---|---|
product_id - ID!
|
Unique product identifier |
name - String!
|
Product name |
slug - String!
|
URL-friendly name |
brand - String!
|
Manufacturer brand |
model - String!
|
Product model |
category_id - String!
|
Product category ID |
category - CategoryObjectType
|
Product category details |
description - String
|
Short description |
long_description - String
|
Detailed description |
base_specifications - JSON
|
Category-required attributes |
primary_image_url - String
|
Main product image |
images - [String!]
|
Additional images |
video_url - String
|
Product video |
meta_title - String
|
SEO title |
meta_description - String
|
SEO description |
keywords - [String!]
|
Search keywords |
is_active - Boolean!
|
Is product visible? |
approval_status - ProductApprovalStatusEnum!
|
Approval state |
submitted_by_seller_id - String
|
Seller who requested |
approved_by - String
|
Admin who approved |
approved_at - DateTime
|
Approval timestamp |
rejection_reason - String
|
Why rejected |
created_at - DateTime!
|
Creation timestamp |
updated_at - DateTime!
|
Last update timestamp |
Example
{
"product_id": "4",
"name": "xyz789",
"slug": "abc123",
"brand": "xyz789",
"model": "xyz789",
"category_id": "abc123",
"category": CategoryObjectType,
"description": "abc123",
"long_description": "xyz789",
"base_specifications": {},
"primary_image_url": "abc123",
"images": ["xyz789"],
"video_url": "abc123",
"meta_title": "abc123",
"meta_description": "abc123",
"keywords": ["xyz789"],
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
ProductOfferFilterInput
Description
Filter input for querying product offers
Fields
| Input Field | Description |
|---|---|
title - String
|
Filter by title |
status - OfferStatusEnum
|
Filter by status |
type - OfferTypeEnum
|
Filter by type |
promo_code - String
|
Filter by promo code |
active - Boolean
|
Filter by active status |
seller_id - String
|
Filter by seller ID |
sku_id - String
|
Filter by SKU ID |
Example
{
"title": "xyz789",
"status": "DRAFT",
"type": "PERCENTAGE",
"promo_code": "abc123",
"active": true,
"seller_id": "abc123",
"sku_id": "xyz789"
}
ProductOfferObjectType
Fields
| Field Name | Description |
|---|---|
product_offer_id - ID!
|
Unique product offer identifier |
sku_id - ID
|
SKU identifier |
description - String
|
Offer details |
status - OfferStatusEnum!
|
Status |
type - OfferTypeEnum!
|
Type |
discount_value - Float
|
Discount value |
minimum_purchase_amount - Float
|
Min order value |
maximum_discount_amount - Float
|
Discount cap |
usage_limit - Int
|
Total redemptions |
usage_count - Int!
|
Times used |
usage_limit_per_customer - Int
|
Per customer limit |
promo_code - String
|
Promo code |
category_filters - [String!]!
|
Categories |
brand_filters - [String!]!
|
Brands |
applicable_channels - [String!]
|
Channels |
active - Boolean!
|
Currently available? |
starts_at - DateTime!
|
Start time |
ends_at - DateTime!
|
End time |
seller_id - String
|
Seller (null = platform) |
created_at - DateTime!
|
Created timestamp |
updated_at - DateTime!
|
Updated timestamp |
Example
{
"product_offer_id": 4,
"sku_id": 4,
"description": "xyz789",
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 987.65,
"minimum_purchase_amount": 123.45,
"maximum_discount_amount": 987.65,
"usage_limit": 123,
"usage_count": 123,
"usage_limit_per_customer": 123,
"promo_code": "abc123",
"category_filters": ["xyz789"],
"brand_filters": ["abc123"],
"applicable_channels": ["abc123"],
"active": false,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
ProductOffersNamespace
Fields
| Field Name | Description |
|---|---|
createProductOffer - ProductOfferObjectType!
|
|
Arguments
|
|
productOffers - [ProductOfferObjectType!]!
|
|
Arguments
|
|
updateProductOffer - ProductOfferObjectType!
|
|
Arguments
|
|
Example
{
"createProductOffer": ProductOfferObjectType,
"productOffers": [ProductOfferObjectType],
"updateProductOffer": ProductOfferObjectType
}
ProductSnapshotType
Example
{
"inventory_id": "abc123",
"imei": "abc123",
"sku_id": "xyz789",
"sku_code": "xyz789",
"sku_name": "xyz789",
"stock_location": "xyz789",
"stock_type_1p_3p": "abc123",
"captured_at": "2007-12-03T10:15:30Z",
"captured_by": "xyz789"
}
ProductsNamespace
Fields
| Field Name | Description |
|---|---|
createProduct - ProductObjectType!
|
|
Arguments
|
|
product - ProductObjectType!
|
|
Arguments
|
|
products - [ProductObjectType!]!
|
|
Arguments
|
|
productsWithOffsetPagination - OffsetPaginatedProducts!
|
|
Arguments
|
|
productsWithCursorPagination - CursorPaginatedProducts!
|
|
Arguments
|
|
updateProduct - ProductObjectType!
|
|
Arguments
|
|
deleteProduct - Boolean!
|
|
Arguments
|
|
productsCount - Float!
|
|
Arguments
|
|
activeProducts - [ProductObjectType!]!
|
|
Arguments
|
|
productsByBrand - [ProductObjectType!]!
|
|
Arguments
|
|
productsByCategory - [ProductObjectType!]!
|
|
Arguments
|
|
pendingApprovalProducts - [ProductObjectType!]!
|
|
searchProducts - [ProductObjectType!]!
|
|
Arguments
|
|
checkProductExists - Boolean!
|
|
approveProduct - ProductObjectType!
|
|
rejectProduct - ProductObjectType!
|
|
Example
{
"createProduct": ProductObjectType,
"product": ProductObjectType,
"products": [ProductObjectType],
"productsWithOffsetPagination": OffsetPaginatedProducts,
"productsWithCursorPagination": CursorPaginatedProducts,
"updateProduct": ProductObjectType,
"deleteProduct": true,
"productsCount": 123.45,
"activeProducts": [ProductObjectType],
"productsByBrand": [ProductObjectType],
"productsByCategory": [ProductObjectType],
"pendingApprovalProducts": [ProductObjectType],
"searchProducts": [ProductObjectType],
"checkProductExists": false,
"approveProduct": ProductObjectType,
"rejectProduct": ProductObjectType
}
QCReportInput
Fields
| Input Field | Description |
|---|---|
make - String
|
Device manufacturer |
model - String
|
Device model |
model_number - String
|
Model number |
serial - String
|
Serial number |
imei - String
|
IMEI |
imei2 - String
|
IMEI2 |
color - String
|
Device color |
memory - String
|
Storage memory |
carrier - String
|
Carrier |
unlock_status - String
|
Unlock status |
os_version - String
|
OS version |
grade - String
|
Grade |
battery_health_percentage - Float
|
Battery health percentage |
battery_charge_percentage - Float
|
Battery charge percentage |
battery_cycle_count - Int
|
Battery cycle count |
battery_current_max_capacity - Float
|
Battery current max capacity |
battery_design_max_capacity - Float
|
Battery design max capacity |
battery_health_grade - String
|
Battery health grade |
working_status - String
|
Working status |
passed - JSON
|
Passed tests |
failed - JSON
|
Failed tests |
pending - Boolean
|
Pending tests |
glass_condition - String
|
Glass condition |
cosmetics - String
|
Cosmetic condition |
notes - String
|
QC notes |
tester_name - String
|
Tester name |
user_id - String
|
User ID |
test_plan_name - String
|
Test plan name |
added_date - String
|
Added date |
updated_date - String
|
Updated date |
upload_date - String
|
Upload date |
upload_notes - String
|
Upload notes |
Example
{
"make": "abc123",
"model": "abc123",
"model_number": "xyz789",
"serial": "abc123",
"imei": "xyz789",
"imei2": "abc123",
"color": "xyz789",
"memory": "xyz789",
"carrier": "abc123",
"unlock_status": "abc123",
"os_version": "xyz789",
"grade": "abc123",
"battery_health_percentage": 123.45,
"battery_charge_percentage": 987.65,
"battery_cycle_count": 987,
"battery_current_max_capacity": 987.65,
"battery_design_max_capacity": 123.45,
"battery_health_grade": "abc123",
"working_status": "xyz789",
"passed": {},
"failed": {},
"pending": true,
"glass_condition": "abc123",
"cosmetics": "xyz789",
"notes": "xyz789",
"tester_name": "abc123",
"user_id": "abc123",
"test_plan_name": "xyz789",
"added_date": "abc123",
"updated_date": "abc123",
"upload_date": "abc123",
"upload_notes": "xyz789"
}
QCReportType
Fields
| Field Name | Description |
|---|---|
make - String
|
Device manufacturer |
model - String
|
Device model |
model_number - String
|
Model number |
serial - String
|
Serial number |
imei - String
|
IMEI |
imei2 - String
|
IMEI2 |
color - String
|
Device color |
memory - String
|
Storage memory |
carrier - String
|
Carrier |
unlock_status - String
|
Unlock status |
os_version - String
|
OS version |
grade - String
|
Grade |
battery_health_percentage - Float
|
Battery health percentage |
battery_charge_percentage - Float
|
Battery charge percentage |
battery_cycle_count - Int
|
Battery cycle count |
battery_current_max_capacity - Float
|
Battery current max capacity |
battery_design_max_capacity - Float
|
Battery design max capacity |
battery_health_grade - String
|
Battery health grade |
working_status - String
|
Working status |
passed - JSON
|
Passed tests |
failed - JSON
|
Failed tests |
pending - Boolean
|
Pending tests |
glass_condition - String
|
Glass condition |
cosmetics - String
|
Cosmetic condition |
notes - String
|
QC notes |
tester_name - String
|
Tester name |
user_id - String
|
User ID |
test_plan_name - String
|
Test plan name |
added_date - String
|
Added date |
updated_date - String
|
Updated date |
device_lock - String
|
Device lock status |
mdm_status - String
|
MDM status |
knox - String
|
Knox status |
apple_id - String
|
Apple ID status |
rooted - Boolean
|
Device rooted status |
erased - Boolean
|
Device erased status |
eraser_type - String
|
Eraser type |
eraser_start - String
|
Eraser start time |
eraser_end - String
|
Eraser end time |
eraser_total_time - String
|
Total erasure time |
erased_notes - String
|
Erasure notes |
swappa_qualified - Boolean
|
Swappa qualified status |
swappa_rejection - String
|
Swappa rejection reason |
back_market_qualified - Boolean
|
Back Market qualified status |
back_market_rejection - String
|
Back Market rejection reason |
amazon_renewed - Boolean
|
Amazon Renewed qualified status |
amazon_renewed_rejection - String
|
Amazon Renewed rejection reason |
ebay_refurbished - Boolean
|
eBay Refurbished qualified status |
ebay_rejection - String
|
eBay rejection reason |
a4_certificate_link - String
|
A4 certificate link |
erasure_certificate_link - String
|
Erasure certificate link |
device_history_report_link - String
|
Device history report link |
a4_report_id - String
|
A4 report ID |
raw_csv_data - JSON
|
Raw CSV data |
upload_date - String
|
Upload date |
upload_notes - String
|
Upload notes |
Example
{
"make": "xyz789",
"model": "xyz789",
"model_number": "abc123",
"serial": "abc123",
"imei": "abc123",
"imei2": "abc123",
"color": "xyz789",
"memory": "abc123",
"carrier": "abc123",
"unlock_status": "xyz789",
"os_version": "xyz789",
"grade": "xyz789",
"battery_health_percentage": 123.45,
"battery_charge_percentage": 987.65,
"battery_cycle_count": 987,
"battery_current_max_capacity": 123.45,
"battery_design_max_capacity": 123.45,
"battery_health_grade": "xyz789",
"working_status": "abc123",
"passed": {},
"failed": {},
"pending": true,
"glass_condition": "abc123",
"cosmetics": "xyz789",
"notes": "abc123",
"tester_name": "xyz789",
"user_id": "abc123",
"test_plan_name": "abc123",
"added_date": "abc123",
"updated_date": "xyz789",
"device_lock": "xyz789",
"mdm_status": "xyz789",
"knox": "xyz789",
"apple_id": "xyz789",
"rooted": false,
"erased": true,
"eraser_type": "abc123",
"eraser_start": "abc123",
"eraser_end": "abc123",
"eraser_total_time": "xyz789",
"erased_notes": "abc123",
"swappa_qualified": false,
"swappa_rejection": "xyz789",
"back_market_qualified": false,
"back_market_rejection": "xyz789",
"amazon_renewed": false,
"amazon_renewed_rejection": "abc123",
"ebay_refurbished": false,
"ebay_rejection": "xyz789",
"a4_certificate_link": "xyz789",
"erasure_certificate_link": "xyz789",
"device_history_report_link": "xyz789",
"a4_report_id": "abc123",
"raw_csv_data": {},
"upload_date": "xyz789",
"upload_notes": "abc123"
}
QCReportWithCondition
Fields
| Field Name | Description |
|---|---|
qc_report - QCReportType!
|
PhoneCheck QC report data |
condition - ConditionObjectType!
|
Matched condition based on QC criteria |
imei_validation - IMEIValidationResult!
|
IMEI validation details |
Example
{
"qc_report": QCReportType,
"condition": ConditionObjectType,
"imei_validation": IMEIValidationResult
}
QCStatus
Description
Quality Control status of inventory item
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
QCStatusTypeEnum
Description
QC status type classification
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"INBOUND"
RepairAllocationResultType
Fields
| Field Name | Description |
|---|---|
sale_id - String!
|
|
payment_id - String!
|
|
allocated_amount - Float!
|
|
new_sale_status - String!
|
|
order_id - String
|
|
new_order_status - String
|
|
excess_action - RepairExcessActionEnum
|
|
excess_amount - Float
|
|
excess_target_sale_id - String
|
|
excess_reversal_adjustment_id - String
|
|
new_payment_status - String
|
Example
{
"sale_id": "xyz789",
"payment_id": "xyz789",
"allocated_amount": 123.45,
"new_sale_status": "abc123",
"order_id": "xyz789",
"new_order_status": "abc123",
"excess_action": "LEAVE_IN_WALLET",
"excess_amount": 123.45,
"excess_target_sale_id": "abc123",
"excess_reversal_adjustment_id": "abc123",
"new_payment_status": "abc123"
}
RepairBillingTypeEnum
Description
Billing type for repair order
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"WARRANTY"
RepairExcessActionEnum
Description
What to do with any unallocated payment balance remaining after covering the REPAIR sale.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"LEAVE_IN_WALLET"
RepairFilterInput
Description
Filter input for querying repairs
Fields
| Input Field | Description |
|---|---|
repair_display_id - String
|
Filter by repair display ID |
inventory_id - String
|
Filter by inventory ID |
customer_id - String
|
Filter by customer ID |
original_sale_id - String
|
Filter by original sale ID |
order_id - String
|
Filter by order ID |
provider_seller_id - String
|
Filter by provider seller ID |
location_status - RepairLocationStatusEnum
|
Filter by location status |
status - RepairStatusEnum
|
Filter by repair status |
priority - RepairPriorityEnum
|
Filter by priority level |
is_left_at_shop - Boolean
|
Filter by shop status |
issue_tag - String
|
Filter by issue tag |
billing_type - RepairBillingTypeEnum
|
Filter by billing type |
Example
{
"repair_display_id": "abc123",
"inventory_id": "xyz789",
"customer_id": "abc123",
"original_sale_id": "xyz789",
"order_id": "xyz789",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"issue_tag": "abc123",
"billing_type": "WARRANTY"
}
RepairLocationStatusEnum
Description
Location status of repair order
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"FRONT_DESK"
RepairNamespace
Fields
| Field Name | Description |
|---|---|
createRepair - RepairObjectType!
|
|
Arguments
|
|
repairs - [RepairObjectType!]!
|
|
Arguments
|
|
updateRepair - RepairObjectType!
|
|
Arguments
|
|
Example
{
"createRepair": RepairObjectType,
"repairs": [RepairObjectType],
"updateRepair": RepairObjectType
}
RepairObjectType
Fields
| Field Name | Description |
|---|---|
repair_id - ID!
|
Unique repair order identifier |
repair_display_id - String!
|
Human-readable ID |
requires_technician - Boolean!
|
Needs technician? |
inventory_id - String
|
Linked device |
customer_id - String!
|
Device owner |
original_sale_id - String
|
Original purchase |
provider_seller_id - String!
|
Service provider |
location_status - RepairLocationStatusEnum!
|
Current stage |
status - RepairStatusEnum!
|
Repair status |
priority - RepairPriorityEnum!
|
Repair priority level |
is_left_at_shop - Boolean!
|
Device left? |
intake_details - JSON!
|
Condition at intake |
outtake_details - JSON!
|
Condition after repair |
security - JSON!
|
Security/access info |
issue_tag - String!
|
Issue category |
customer_complaint - String!
|
Customer description |
hq_diagnostic_notes - String
|
Technician notes |
billing_type - RepairBillingTypeEnum!
|
Payment type |
quoted_price - Float!
|
Repair estimate |
spares_cost - Float!
|
Parts cost |
estimated_completion_at - DateTime
|
Expected completion |
actual_completion_at - DateTime
|
Actual completion |
created_at - DateTime!
|
Created timestamp |
updated_at - DateTime!
|
Updated timestamp |
inventory - InventoryObjectType
|
Inventory for inventory_id |
seller - SellerObjectType
|
Seller for provider_seller_id |
Example
{
"repair_id": "4",
"repair_display_id": "xyz789",
"requires_technician": true,
"inventory_id": "abc123",
"customer_id": "abc123",
"original_sale_id": "abc123",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": true,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 987.65,
"estimated_completion_at": "2007-12-03T10:15:30Z",
"actual_completion_at": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"inventory": InventoryObjectType,
"seller": SellerObjectType
}
RepairOuttakeInput
Example
{
"repair_completed": false,
"parts_replaced": ["xyz789"],
"final_condition": "abc123",
"warranty_provided": false,
"customer_satisfaction": 123
}
RepairPriorityEnum
Description
Priority level of repair order
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"LOW"
RepairSaleReallocationResultType
Example
{
"sale_id": "xyz789",
"customer_id": "abc123",
"reversed_amount": 987.65,
"reversed_allocation_ids": ["abc123"],
"wallet_credited": 987.65,
"reallocation_adjustment_id": "abc123",
"new_sale_status": "xyz789",
"new_order_status": "abc123"
}
RepairStatusEnum
Description
Status of repair order
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
SellerCatalogFilterInput
Description
Filter input for querying seller catalog
Fields
| Input Field | Description |
|---|---|
seller_catalog_id - String
|
Filter by seller catalog ID |
seller_id - String
|
Filter by seller ID |
sku_id - String
|
Filter by SKU ID |
agent_profile_id - String
|
Filter catalog visibility using the agent business profile ID |
currency - String
|
Filter by currency |
is_active - Boolean
|
Filter by active status |
min_retail_price - Float
|
Minimum retail price |
max_retail_price - Float
|
Maximum retail price |
min_cost_price - Float
|
Minimum cost price |
max_cost_price - Float
|
Maximum cost price |
sku - SkuFilterInput
|
Filter by SKU properties |
product - ProductFilterInput
|
Filter by product properties |
search - String
|
Search by product name, brand, model, slug, SKU name, or SKU code |
exclude_out_of_stock - Boolean
|
Exclude listings with zero available stock (requires stock_on_hand - reserved_stock >= 1). |
platform_owner - Boolean
|
Resolve the platform owner seller when seller_id is not provided. |
Example
{
"seller_catalog_id": "xyz789",
"seller_id": "xyz789",
"sku_id": "xyz789",
"agent_profile_id": "abc123",
"currency": "xyz789",
"is_active": true,
"min_retail_price": 987.65,
"max_retail_price": 123.45,
"min_cost_price": 987.65,
"max_cost_price": 987.65,
"sku": SkuFilterInput,
"product": ProductFilterInput,
"search": "xyz789",
"exclude_out_of_stock": true,
"platform_owner": true
}
SellerCatalogNamespace
Fields
| Field Name | Description |
|---|---|
createSellerCatalog - SellerCatalogObjectType!
|
|
Arguments
|
|
createPlatformSellerCatalog - SellerCatalogObjectType!
|
|
Arguments |
|
sellerCatalogs - [SellerCatalogObjectType!]!
|
|
Arguments
|
|
updateSellerCatalog - SellerCatalogObjectType!
|
|
Arguments
|
|
Example
{
"createSellerCatalog": SellerCatalogObjectType,
"createPlatformSellerCatalog": SellerCatalogObjectType,
"sellerCatalogs": [SellerCatalogObjectType],
"updateSellerCatalog": SellerCatalogObjectType
}
SellerCatalogObjectType
Fields
| Field Name | Description |
|---|---|
seller_catalog_id - ID!
|
Unique seller catalog identifier |
seller_id - String!
|
Which seller |
sku_id - String!
|
Which SKU being listed |
cost_price - Float
|
What seller paid (USD) - private |
retail_price - Float!
|
Cash price (USD) |
currency - String!
|
Price currency |
stock_on_hand - Int!
|
Total units available |
reserved_stock - Int!
|
Units in pending orders |
is_active - Boolean!
|
Is listing active? |
listed_at - DateTime
|
When listed |
updated_at - DateTime!
|
Last update timestamp |
available_stock - Int!
|
Available stock (calculated) |
seller - SellerObjectType
|
The Seller this listing is for |
sku - SkuObjectType
|
The SKU this listing is for |
product - ProductObjectType
|
The product this listing is for |
Example
{
"seller_catalog_id": 4,
"seller_id": "abc123",
"sku_id": "xyz789",
"cost_price": 987.65,
"retail_price": 987.65,
"currency": "abc123",
"stock_on_hand": 987,
"reserved_stock": 123,
"is_active": false,
"listed_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"available_stock": 987,
"seller": SellerObjectType,
"sku": SkuObjectType,
"product": ProductObjectType
}
SellerFilterInput
Description
Filter input for querying sellers
Fields
| Input Field | Description |
|---|---|
seller_type - SellerTypeEnum
|
Filter by seller type |
approved_by - String
|
Filter by approver |
partner_profile_id - String
|
Filter by partner profile |
platform_owner - Boolean
|
Platform oner |
Example
{
"seller_type": "INTERNAL",
"approved_by": "abc123",
"partner_profile_id": "xyz789",
"platform_owner": true
}
SellerObjectType
Fields
| Field Name | Description |
|---|---|
seller_id - ID!
|
Unique seller identifier |
commission_type_id - String
|
Commission type |
tier_id - String
|
Seller tier |
seller_type - SellerTypeEnum!
|
Type |
payment_details - JSON
|
Bank/M-Pesa info |
capabilities - JSON
|
What seller can do |
performance_metrics - JSON!
|
Performance tracking |
overall_rating - Float!
|
Average rating (0-5) |
total_reviews - Int!
|
Review count |
total_sales - Int!
|
Completed sales |
total_orders_365_days - Int!
|
Orders in last 12 months |
badges - [String!]
|
Earned badges |
suspension_reason - String
|
Why suspended |
approved_by - String
|
Admin who approved |
approved_at - DateTime
|
Approval date |
joined_at - DateTime!
|
Join date |
updated_at - DateTime!
|
Last update timestamp |
partner_profile_id - String
|
partner profile |
platform_owner - Boolean
|
Whether this seller owns the platform |
partner_profile - PartnerProfileObjectType
|
Example
{
"seller_id": 4,
"commission_type_id": "xyz789",
"tier_id": "xyz789",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 987.65,
"total_reviews": 987,
"total_sales": 987,
"total_orders_365_days": 987,
"badges": ["xyz789"],
"suspension_reason": "xyz789",
"approved_by": "xyz789",
"approved_at": "2007-12-03T10:15:30Z",
"joined_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"partner_profile_id": "abc123",
"platform_owner": true,
"partner_profile": PartnerProfileObjectType
}
SellerQuoteInput
Example
{
"cash_price": 987.65,
"seller_id": "abc123",
"minimum_deposit_percentage": 123.45,
"agent_profile_id": "abc123",
"sku_id": "xyz789",
"is_loan": false,
"include_private_plans": true
}
SellerQuoteType
Fields
| Field Name | Description |
|---|---|
cash_price - Float!
|
|
available_plans - [PricingCalculationType!]!
|
|
commission - CommissionCalculationType
|
|
seller_id - String
|
|
calculated_at - DateTime
|
Example
{
"cash_price": 123.45,
"available_plans": [PricingCalculationType],
"commission": CommissionCalculationType,
"seller_id": "abc123",
"calculated_at": "2007-12-03T10:15:30Z"
}
SellerTierFilterInput
SellerTierObjectType
Example
{
"id": 4,
"name": "xyz789",
"description": "abc123",
"priority": 987,
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"price_plans": [PricePlanObjectType]
}
SellerTypeEnum
Description
Type of seller
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"INTERNAL"
SellersNamespace
Fields
| Field Name | Description |
|---|---|
createSeller - SellerObjectType!
|
|
Arguments
|
|
seller - SellerObjectType!
|
|
Arguments
|
|
sellers - [SellerObjectType!]!
|
|
Arguments
|
|
updateSeller - SellerObjectType!
|
|
Arguments
|
|
deleteSeller - Boolean!
|
|
Arguments
|
|
Example
{
"createSeller": SellerObjectType,
"seller": SellerObjectType,
"sellers": [SellerObjectType],
"updateSeller": SellerObjectType,
"deleteSeller": false
}
SkuAgentWhitelistFilterInput
SkuAgentWhitelistObjectType
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
sku_id - String!
|
|
agent_profile_id - String
|
|
agent_type - AgentTypeEnum
|
|
is_active - Boolean!
|
|
is_deleted - Boolean!
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
|
sku - SkuObjectType
|
|
agent_profile - AgentProfileObjectType
|
Example
{
"id": 4,
"sku_id": "xyz789",
"agent_profile_id": "abc123",
"agent_type": "SFM",
"is_active": true,
"is_deleted": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sku": SkuObjectType,
"agent_profile": AgentProfileObjectType
}
SkuAgentWhitelistsNamespace
Fields
| Field Name | Description |
|---|---|
skuAgentWhitelist - SkuAgentWhitelistObjectType
|
|
Arguments
|
|
skuAgentWhitelistItems - [SkuAgentWhitelistObjectType!]!
|
|
Arguments
|
|
createSkuAgentWhitelist - SkuAgentWhitelistObjectType!
|
|
Arguments
|
|
updateSkuAgentWhitelist - SkuAgentWhitelistObjectType!
|
|
Arguments
|
|
deleteSkuAgentWhitelist - Boolean!
|
|
Arguments
|
|
Example
{
"skuAgentWhitelist": SkuAgentWhitelistObjectType,
"skuAgentWhitelistItems": [SkuAgentWhitelistObjectType],
"createSkuAgentWhitelist": SkuAgentWhitelistObjectType,
"updateSkuAgentWhitelist": SkuAgentWhitelistObjectType,
"deleteSkuAgentWhitelist": false
}
SkuFilterInput
Description
Filter input for querying SKUs
Fields
| Input Field | Description |
|---|---|
product_id - String
|
Filter by product ID |
condition_id - String
|
Filter by condition ID |
parent_sku_id - String
|
Filter by parent SKU ID |
level - Int
|
Filter by hierarchy level |
level_attribute_key - String
|
Filter by hierarchy attribute key |
level_attribute_value - String
|
Filter by hierarchy attribute value |
sku_code - String
|
Filter by SKU code |
name - String
|
Filter by name |
is_active - Boolean
|
Filter by active status |
approval_status - ProductApprovalStatusEnum
|
Filter by approval status |
submitted_by_seller_id - String
|
Filter by submitting seller ID |
Example
{
"product_id": "abc123",
"condition_id": "abc123",
"parent_sku_id": "xyz789",
"level": 123,
"level_attribute_key": "xyz789",
"level_attribute_value": "abc123",
"sku_code": "abc123",
"name": "xyz789",
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789"
}
SkuObjectType
Fields
| Field Name | Description |
|---|---|
sku_id - ID!
|
Unique SKU identifier |
product_id - String!
|
Parent product ID |
condition_id - String
|
Condition grade ID |
parent_sku_id - String
|
Parent SKU ID |
level - Int!
|
Hierarchy level |
level_attribute_key - String
|
Level attribute key |
level_attribute_value - String
|
Level attribute value |
sku_code - String!
|
SKU identifier |
name - String!
|
Full SKU name |
attributes - JSON!
|
Variant attributes |
variant_specifications - JSON
|
Variant-specific specs |
msrp_price - Float
|
Original retail price when new |
min_seller_price - Float
|
Minimum allowed seller price |
max_seller_price - Float
|
Maximum allowed seller price |
suggested_retail_price - Float
|
Platform recommended price |
effective_price - Float
|
Resolved effective price after inheritance |
images - [String!]
|
Photos of this variant |
weight_grams - Int
|
Physical weight |
dimensions_mm - String
|
Dimensions |
is_active - Boolean!
|
Is SKU available? |
approval_status - ProductApprovalStatusEnum!
|
Approval state |
submitted_by_seller_id - String
|
Seller who requested |
approved_by - String
|
Admin who approved |
approved_at - DateTime
|
Approval timestamp |
rejection_reason - String
|
Why rejected |
created_at - DateTime!
|
Creation timestamp |
updated_at - DateTime!
|
Last update timestamp |
product - ProductObjectType
|
Product for product_id |
condition - ConditionObjectType
|
Condition for condition_id |
Example
{
"sku_id": 4,
"product_id": "abc123",
"condition_id": "abc123",
"parent_sku_id": "abc123",
"level": 987,
"level_attribute_key": "abc123",
"level_attribute_value": "abc123",
"sku_code": "abc123",
"name": "xyz789",
"attributes": {},
"variant_specifications": {},
"msrp_price": 987.65,
"min_seller_price": 987.65,
"max_seller_price": 123.45,
"suggested_retail_price": 123.45,
"effective_price": 123.45,
"images": ["xyz789"],
"weight_grams": 123,
"dimensions_mm": "xyz789",
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"rejection_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"product": ProductObjectType,
"condition": ConditionObjectType
}
SkusNamespace
Fields
| Field Name | Description |
|---|---|
createSku - SkuObjectType!
|
|
Arguments
|
|
createSkuChild - SkuObjectType!
|
|
Arguments
|
|
sku - SkuObjectType!
|
|
Arguments
|
|
skus - [SkuObjectType!]!
|
|
Arguments
|
|
skuAncestors - [SkuObjectType!]!
|
|
Arguments
|
|
skuTree - [SkuObjectType!]!
|
|
Arguments
|
|
skuEffectivePrice - Float!
|
|
Arguments
|
|
updateSku - SkuObjectType!
|
|
Arguments
|
|
deleteSku - Boolean!
|
|
Arguments
|
|
Example
{
"createSku": SkuObjectType,
"createSkuChild": SkuObjectType,
"sku": SkuObjectType,
"skus": [SkuObjectType],
"skuAncestors": [SkuObjectType],
"skuTree": [SkuObjectType],
"skuEffectivePrice": 123.45,
"updateSku": SkuObjectType,
"deleteSku": true
}
MDM / Devices
BulkUnlockDeviceResultType
Example
{
"inventoryId": "xyz789",
"imei": "xyz789",
"mdmDeviceId": "xyz789",
"mdmProvider": "xyz789",
"success": false,
"error": "abc123"
}
BulkUnlockInput
Fields
| Input Field | Description |
|---|---|
identifierType - DeviceIdentifierType!
|
The type of identifier supplied in values — INVENTORY_ID, IMEI, or MDM_DEVICE_ID. |
values - [String!]!
|
List of identifier values matching the chosen identifierType. |
opts - LockDeviceInput
|
Example
{
"identifierType": "INVENTORY_ID",
"values": ["xyz789"],
"opts": LockDeviceInput
}
BulkUnlockResultType
Fields
| Field Name | Description |
|---|---|
totalRequested - Int!
|
Total number of identifiers submitted |
totalResolved - Int!
|
Devices successfully resolved to an enrolled MDM device |
totalSucceeded - Int!
|
|
totalFailed - Int!
|
|
results - [BulkUnlockDeviceResultType!]!
|
|
platformSummaries - [PlatformUnlockSummaryType!]!
|
Example
{
"totalRequested": 123,
"totalResolved": 123,
"totalSucceeded": 987,
"totalFailed": 123,
"results": [BulkUnlockDeviceResultType],
"platformSummaries": [PlatformUnlockSummaryType]
}
DeviceAllocationDetailsType
Fields
| Field Name | Description |
|---|---|
new_device_assigned_at - DateTime
|
|
new_device_assigned_by - String
|
|
new_device_id - String
|
|
new_device_serial_number - String
|
Resolved serial number of the new device (populated by field resolver) |
new_device_name - String
|
Resolved SKU name of the new device (populated by field resolver) |
Example
{
"new_device_assigned_at": "2007-12-03T10:15:30Z",
"new_device_assigned_by": "abc123",
"new_device_id": "xyz789",
"new_device_serial_number": "abc123",
"new_device_name": "abc123"
}
DeviceCommandResultType
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
|
message - String
|
|
command - DeviceLockCommandType!
|
Example
{
"success": false,
"message": "abc123",
"command": DeviceLockCommandType
}
DeviceCommandStatusEnum
Description
Execution status of a device command
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
DeviceCommandTriggerEnum
Description
What triggered this device command
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"MANUAL"
DeviceCommandTypeEnum
Description
Type of command sent to the MDM provider
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"LOCK"
DeviceConditionGrade
Description
Device condition grade on return/recovery
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"GRADE_A"
DeviceIdentifierInput
Example
{
"inventoryId": 4,
"imei": "xyz789",
"mdmDeviceId": "xyz789"
}
DeviceIdentifierType
Description
Which identifier field the supplied values belong to
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"INVENTORY_ID"
DeviceLocationResultType
DeviceLockCommandType
Fields
| Field Name | Description |
|---|---|
command_id - ID!
|
|
device_id - String!
|
|
device_imei - String!
|
|
command_type - DeviceCommandTypeEnum!
|
|
command_status - DeviceCommandStatusEnum!
|
|
command_trigger - DeviceCommandTriggerEnum!
|
|
mdm_provider - MdmProviderEnum!
|
|
initiated_by - String
|
|
mdm_reference_id - String
|
|
error_message - String
|
|
attempt_count - Int!
|
|
command_payload - JSON
|
|
mdm_response - JSON
|
|
command_queued_at - DateTime
|
|
command_sent_at - DateTime
|
|
command_delivered_at - DateTime
|
|
command_completed_at - DateTime
|
|
command_created_at - DateTime!
|
|
command_updated_at - DateTime!
|
Example
{
"command_id": "4",
"device_id": "abc123",
"device_imei": "xyz789",
"command_type": "LOCK",
"command_status": "PENDING",
"command_trigger": "MANUAL",
"mdm_provider": "NUOVOPAY",
"initiated_by": "abc123",
"mdm_reference_id": "xyz789",
"error_message": "abc123",
"attempt_count": 987,
"command_payload": {},
"mdm_response": {},
"command_queued_at": "2007-12-03T10:15:30Z",
"command_sent_at": "2007-12-03T10:15:30Z",
"command_delivered_at": "2007-12-03T10:15:30Z",
"command_completed_at": "2007-12-03T10:15:30Z",
"command_created_at": "2007-12-03T10:15:30Z",
"command_updated_at": "2007-12-03T10:15:30Z"
}
DeviceStatusResultType
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
|
id - String
|
|
mdmProvider - String
|
|
isLocked - Boolean!
|
|
isEnrolled - Boolean!
|
|
isOnline - Boolean!
|
|
isScreenLocked - Boolean
|
|
isCharging - Boolean
|
|
isLost - Boolean
|
|
imei - String
|
|
imei2 - String
|
|
serialNumber - String
|
|
model - String
|
|
manufacturer - String
|
|
osVersion - String
|
|
phoneNumber - String
|
|
phoneNumber2 - String
|
|
networkOperator - String
|
|
networkOperator2 - String
|
|
batteryLevel - Float
|
|
lastSeenAt - DateTime
|
|
enrollmentDate - DateTime
|
|
enrollmentStatus - String
|
|
nextLockDate - DateTime
|
|
unlockCode - String
|
|
deviceGroupId - String
|
|
deviceGroupName - String
|
|
storageTotal - Int
|
|
storageAvailable - Int
|
|
location - DeviceLocationResultType
|
|
simLockInfo - SimLockInfoType
|
|
rawStatus - JSON
|
Example
{
"success": false,
"id": "abc123",
"mdmProvider": "xyz789",
"isLocked": true,
"isEnrolled": false,
"isOnline": false,
"isScreenLocked": true,
"isCharging": false,
"isLost": true,
"imei": "abc123",
"imei2": "xyz789",
"serialNumber": "abc123",
"model": "abc123",
"manufacturer": "abc123",
"osVersion": "xyz789",
"phoneNumber": "xyz789",
"phoneNumber2": "abc123",
"networkOperator": "xyz789",
"networkOperator2": "abc123",
"batteryLevel": 987.65,
"lastSeenAt": "2007-12-03T10:15:30Z",
"enrollmentDate": "2007-12-03T10:15:30Z",
"enrollmentStatus": "xyz789",
"nextLockDate": "2007-12-03T10:15:30Z",
"unlockCode": "abc123",
"deviceGroupId": "abc123",
"deviceGroupName": "abc123",
"storageTotal": 987,
"storageAvailable": 987,
"location": DeviceLocationResultType,
"simLockInfo": SimLockInfoType,
"rawStatus": {}
}
MdmActivityLogEntryType
Example
{
"id": 4,
"event": "xyz789",
"item_id": 4,
"item_type": "xyz789",
"request_id": "abc123",
"created_at": "xyz789",
"actor": "xyz789",
"changes": [{}],
"originated_from": "abc123"
}
MdmActivityLogsResultType
Fields
| Field Name | Description |
|---|---|
logs - [MdmActivityLogEntryType!]!
|
|
total_count - Int!
|
Example
{"logs": [MdmActivityLogEntryType], "total_count": 123}
MdmEnrollmentStatusEnum
Description
Status of inventory item MDM enrollment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
MdmLockLogsNamespace
Fields
| Field Name | Description |
|---|---|
_description - String
|
|
command - DeviceLockCommandType
|
|
Arguments
|
|
commandHistory - [DeviceLockCommandType!]!
|
|
Arguments
|
|
latestCommand - DeviceLockCommandType
|
|
Arguments
|
|
Example
{
"_description": "abc123",
"command": DeviceLockCommandType,
"commandHistory": [DeviceLockCommandType],
"latestCommand": DeviceLockCommandType
}
MdmNamespace
Fields
| Field Name | Description |
|---|---|
_description - String
|
|
lockDevice - DeviceCommandResultType!
|
|
Arguments
|
|
unlockDevice - DeviceCommandResultType!
|
|
Arguments
|
|
bulkUnlockDevices - BulkUnlockResultType!
|
|
Arguments
|
|
bulkLockDevices - BulkUnlockResultType!
|
|
Arguments
|
|
deviceStatus - DeviceStatusResultType!
|
|
Arguments
|
|
activityLogs - MdmActivityLogsResultType!
|
|
Arguments |
|
Example
{
"_description": "abc123",
"lockDevice": DeviceCommandResultType,
"unlockDevice": DeviceCommandResultType,
"bulkUnlockDevices": BulkUnlockResultType,
"bulkLockDevices": BulkUnlockResultType,
"deviceStatus": DeviceStatusResultType,
"activityLogs": MdmActivityLogsResultType
}
MdmProviderEnum
Description
Supported MDM (Mobile Device Management) providers
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"NUOVOPAY"
Credit Bureau
CrbAnalysisType
Description
Combined CRB analysis with score explanation and credit check fields
Fields
| Field Name | Description |
|---|---|
scoreExplanation - CrbScoreExplanationType
|
Score explanation details |
creditCheckFields - CrbCreditCheckFieldsType
|
Formatted CRB credit check values |
Example
{
"scoreExplanation": CrbScoreExplanationType,
"creditCheckFields": CrbCreditCheckFieldsType
}
CrbCreditCheckFieldsType
Description
CRB credit check fields
Example
{
"recentLoansCrb": "xyz789",
"openLoanOdsCrb": "abc123",
"pastDefaultsCrb": "xyz789",
"pastDefaultRecord": "xyz789",
"dobTimestampCRB": "abc123",
"openLoanRecord": "abc123"
}
CrbCreditHistoryType
CrbCustomerProfileType
CrbDetailedAnalysisType
Description
Detailed CRB analysis breakdown
Fields
| Field Name | Description |
|---|---|
customerProfile - CrbCustomerProfileType!
|
|
creditHistory - CrbCreditHistoryType!
|
|
riskFactors - [CrbRiskFactorType!]!
|
|
positiveFactors - [CrbPositiveFactorType!]!
|
Example
{
"customerProfile": CrbCustomerProfileType,
"creditHistory": CrbCreditHistoryType,
"riskFactors": [CrbRiskFactorType],
"positiveFactors": [CrbPositiveFactorType]
}
CrbPlatform
Description
Credit bureau provider platforms
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"TRANSUNION"
CrbPositiveFactorType
CrbReportValidationCheckInput
Fields
| Input Field | Description |
|---|---|
applicationId - ID!
|
|
crbGatewayType - CrbPlatform
|
|
justification - String!
|
Reason for running this check |
Example
{
"applicationId": "4",
"crbGatewayType": "TRANSUNION",
"justification": "xyz789"
}
CrbRiskFactorType
CrbRuleEvaluationType
Description
CRB rule evaluation result
Fields
| Field Name | Description |
|---|---|
ruleName - String!
|
|
scoreCategory - String!
|
|
conditions - [String!]!
|
|
result - String!
|
|
reason - String!
|
Example
{
"ruleName": "xyz789",
"scoreCategory": "xyz789",
"conditions": ["xyz789"],
"result": "xyz789",
"reason": "abc123"
}
CrbScoreExplanationType
Description
CRB score explanation
Fields
| Field Name | Description |
|---|---|
finalScore - String!
|
|
primaryReason - String!
|
|
detailedAnalysis - CrbDetailedAnalysisType!
|
|
rulesEvaluated - [CrbRuleEvaluationType!]!
|
|
response - String
|
Example
{
"finalScore": "abc123",
"primaryReason": "xyz789",
"detailedAnalysis": CrbDetailedAnalysisType,
"rulesEvaluated": [CrbRuleEvaluationType],
"response": "xyz789"
}
CrbValidationCheckInput
CreditBureauTransactionCursorPaginatedResponse
Description
Cursor paginated credit bureau transactions response
Fields
| Field Name | Description |
|---|---|
data - [CreditBureauTransactionDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CreditBureauTransactionDto],
"pagination": CursorPaginationMetadata
}
CreditBureauTransactionDto
Description
Credit bureau transaction record
Fields
| Field Name | Description |
|---|---|
id - ID
|
Unique identifier |
_id - ID
|
Unique identifier |
provider - CrbPlatform!
|
Credit bureau provider |
customer_id - String!
|
Customer ID |
customer_dob - DateTime
|
Customer date of birth |
customer_age - Float!
|
Customer age |
customer_name - String!
|
Customer name |
recent_loans_crb - Float!
|
Recent loans from CRB |
open_loans_count - Float!
|
Open loans count |
past_default_crb - Float!
|
Past defaults from CRB |
open_loan_record - Float!
|
Open loan record count |
written_off_loans - Float!
|
Written off loans count |
settled_default_loans - Float!
|
Settled default loans count |
closed_default_loans - Float!
|
Closed default loans count |
open_default_loans - Float!
|
Open default loans count |
is_report_empty - Boolean!
|
Whether the report is empty |
has_no_defaults_and_low_principals - Boolean!
|
Has no defaults and low principals |
paid_off_loans_in_time_12_months - Float!
|
Paid off loans in time (12 months) |
paid_off_loans_in_time_all - Float!
|
Paid off loans in time (all time) |
principals_below_5000 - Float!
|
Principals below 5000 |
phone_numbers - [String!]
|
Phone numbers |
system_defined_score - String
|
System defined score |
user_defined_score - String
|
User defined score |
score - String
|
Computed score (user or system) |
pdf_id - String
|
PDF document ID |
pdf_url - String
|
PDF document URL |
rawData - JSON
|
Raw data object |
metadata - JSON
|
Additional metadata |
manual_override - Boolean!
|
Whether score was manually overridden |
record_status - VerificationRecordStatus
|
Cache freshness state of this record |
crb_analysis - CrbAnalysisType
|
|
createdAt - DateTime
|
Record creation timestamp |
updatedAt - DateTime
|
Record update timestamp |
Example
{
"id": 4,
"_id": "4",
"provider": "TRANSUNION",
"customer_id": "xyz789",
"customer_dob": "2007-12-03T10:15:30Z",
"customer_age": 123.45,
"customer_name": "xyz789",
"recent_loans_crb": 987.65,
"open_loans_count": 987.65,
"past_default_crb": 987.65,
"open_loan_record": 987.65,
"written_off_loans": 123.45,
"settled_default_loans": 987.65,
"closed_default_loans": 123.45,
"open_default_loans": 123.45,
"is_report_empty": false,
"has_no_defaults_and_low_principals": false,
"paid_off_loans_in_time_12_months": 123.45,
"paid_off_loans_in_time_all": 123.45,
"principals_below_5000": 987.65,
"phone_numbers": ["xyz789"],
"system_defined_score": "abc123",
"user_defined_score": "abc123",
"score": "xyz789",
"pdf_id": "xyz789",
"pdf_url": "abc123",
"rawData": {},
"metadata": {},
"manual_override": true,
"record_status": "ACTIVE",
"crb_analysis": CrbAnalysisType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
CreditBureauTransactionFilterInput
Description
Filter input for querying credit bureau transactions
Fields
| Input Field | Description |
|---|---|
customer_id - String
|
Filter by customer ID |
provider - CrbPlatform
|
Filter by provider |
manual_override - Boolean
|
Filter by manual override status |
record_status - VerificationRecordStatus
|
Filter by cache freshness state |
Example
{
"customer_id": "abc123",
"provider": "TRANSUNION",
"manual_override": true,
"record_status": "ACTIVE"
}
CreditBureauTransactionOffsetPaginatedResponse
Description
Offset paginated credit bureau transactions response
Fields
| Field Name | Description |
|---|---|
data - [CreditBureauTransactionDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CreditBureauTransactionDto],
"metadata": OffsetPaginationMetadata
}
MoneyStatementAnalysisCursorPaginatedResponse
Description
Cursor paginated money statement analyses response
Fields
| Field Name | Description |
|---|---|
data - [MoneyStatementAnalysisDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [MoneyStatementAnalysisDto],
"pagination": CursorPaginationMetadata
}
MoneyStatementAnalysisDto
Description
Money statement analysis record
Fields
| Field Name | Description |
|---|---|
id - ID
|
Unique identifier |
target_id - String!
|
Target ID (prospect/customer) |
target - ValidationTarget!
|
Target type |
provider_reference - String
|
Provider reference ID |
document_id - String
|
Associated document ID |
status - MoneyStatementStatus
|
Analysis status |
type - MoneyStatementType
|
Statement type |
provider - MoneyStatementChannel
|
Provider channel |
name - String
|
Customer name |
phone_number - String
|
Primary phone number |
secondary_phone_number - String
|
Secondary phone number |
email - String
|
Email address |
duration - Int
|
Statement duration in months |
statement_period - String
|
Statement period description |
agent_deposit - Float
|
Agent deposit amount |
airtime_highest - Float
|
Highest airtime transaction |
internet_bundle_highest - Float
|
Highest internet bundle transaction |
persons_received_from_total - Float
|
Total received from persons |
banks_received - Float
|
Total received from banks |
mfis_received - Float
|
Total received from MFIs |
mobile_lenders_received - Float
|
Total received from mobile lenders |
healthcare_received - Float
|
Total received from healthcare |
saccos_received - Float
|
Total received from SACCOs |
insurance_received - Float
|
Total received from insurance |
betting_received - Float
|
Total received from betting |
others_received - Float
|
Total received from others |
airtime_total - Float
|
Total airtime spent |
internet_bundle_total - Float
|
Total internet bundle spent |
total_paid_in - Float
|
Total paid in |
total_paid_in_average - Float
|
Average total paid in |
total_others - Float
|
Total others |
affordability - Float
|
Calculated affordability |
average_income - Float
|
Average income |
twelve_months_loan_price - Float
|
12 months loan price |
gap_analysis - GapAnalysisResultGraphQL
|
Gap analysis result |
statement_source - MoneyStatementSource
|
Source of the statement (WEBHOOK or PULL) |
income - Float
|
Calculated income (6-month projection) |
airtime_category - String
|
Airtime category |
income_paid_in - Float
|
Income from paid in (6-month projection) |
income_cover - String
|
Income cover category |
jsonData - JSON
|
Raw JSON data from provider |
raw - String
|
Base64-encoded minified raw JSON |
createdAt - DateTime
|
Record creation timestamp |
updatedAt - DateTime
|
Record update timestamp |
Example
{
"id": "4",
"target_id": "abc123",
"target": "LEAD",
"provider_reference": "abc123",
"document_id": "xyz789",
"status": "UNKNOWN",
"type": "MPESA",
"provider": "SPINMOBILE",
"name": "xyz789",
"phone_number": "abc123",
"secondary_phone_number": "abc123",
"email": "xyz789",
"duration": 987,
"statement_period": "xyz789",
"agent_deposit": 123.45,
"airtime_highest": 987.65,
"internet_bundle_highest": 123.45,
"persons_received_from_total": 987.65,
"banks_received": 987.65,
"mfis_received": 123.45,
"mobile_lenders_received": 123.45,
"healthcare_received": 987.65,
"saccos_received": 123.45,
"insurance_received": 987.65,
"betting_received": 123.45,
"others_received": 123.45,
"airtime_total": 123.45,
"internet_bundle_total": 123.45,
"total_paid_in": 123.45,
"total_paid_in_average": 123.45,
"total_others": 123.45,
"affordability": 123.45,
"average_income": 123.45,
"twelve_months_loan_price": 123.45,
"gap_analysis": GapAnalysisResultGraphQL,
"statement_source": "WEBHOOK",
"income": 987.65,
"airtime_category": "xyz789",
"income_paid_in": 123.45,
"income_cover": "abc123",
"jsonData": {},
"raw": "abc123",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
MoneyStatementAnalysisFilterInput
Description
Filter input for querying money statement analyses
Fields
| Input Field | Description |
|---|---|
target_id - StringFilterInput
|
Filter by target ID |
document_id - StringFilterInput
|
Filter by document ID |
target - ValidationTargetFilterInput
|
Filter by target type |
status - MoneyStatementStatusFilterInput
|
Filter by status |
type - MoneyStatementTypeFilterInput
|
Filter by statement type |
provider - MoneyStatementChannelFilterInput
|
Filter by provider |
statement_source - MoneyStatementSourceFilterInput
|
Filter by statement source |
name - StringFilterInput
|
Filter by customer name |
phone_number - StringFilterInput
|
Filter by phone number |
email - StringFilterInput
|
Filter by email |
duration - IntFilterInput
|
Filter by duration (months) |
affordability - FloatFilterInput
|
Filter by affordability |
average_income - FloatFilterInput
|
Filter by average income |
total_paid_in - FloatFilterInput
|
Filter by total paid in |
createdAt - DateFilterInput
|
Filter by creation date |
updatedAt - DateFilterInput
|
Filter by update date |
or - [MoneyStatementAnalysisFilterInput!]
|
|
and - [MoneyStatementAnalysisFilterInput!]
|
Example
{
"target_id": StringFilterInput,
"document_id": StringFilterInput,
"target": ValidationTargetFilterInput,
"status": MoneyStatementStatusFilterInput,
"type": MoneyStatementTypeFilterInput,
"provider": MoneyStatementChannelFilterInput,
"statement_source": MoneyStatementSourceFilterInput,
"name": StringFilterInput,
"phone_number": StringFilterInput,
"email": StringFilterInput,
"duration": IntFilterInput,
"affordability": FloatFilterInput,
"average_income": FloatFilterInput,
"total_paid_in": FloatFilterInput,
"createdAt": DateFilterInput,
"updatedAt": DateFilterInput,
"or": [MoneyStatementAnalysisFilterInput],
"and": [MoneyStatementAnalysisFilterInput]
}
MoneyStatementAnalysisOffsetPaginatedResponse
Description
Offset paginated money statement analyses response
Fields
| Field Name | Description |
|---|---|
data - [MoneyStatementAnalysisDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [MoneyStatementAnalysisDto],
"metadata": OffsetPaginationMetadata
}
MoneyStatementChannel
Description
Channel for money statement analysis
Values
| Enum Value | Description |
|---|---|
|
|
Example
"SPINMOBILE"
MoneyStatementChannelFilterInput
Fields
| Input Field | Description |
|---|---|
eq - MoneyStatementChannel
|
|
ne - MoneyStatementChannel
|
|
in - [MoneyStatementChannel!]
|
|
notIn - [MoneyStatementChannel!]
|
Example
{
"eq": "SPINMOBILE",
"ne": "SPINMOBILE",
"in": ["SPINMOBILE"],
"notIn": ["SPINMOBILE"]
}
MoneyStatementSource
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"WEBHOOK"
MoneyStatementSourceFilterInput
Fields
| Input Field | Description |
|---|---|
eq - MoneyStatementSource
|
|
ne - MoneyStatementSource
|
|
in - [MoneyStatementSource!]
|
|
notIn - [MoneyStatementSource!]
|
Example
{"eq": "WEBHOOK", "ne": "WEBHOOK", "in": ["WEBHOOK"], "notIn": ["WEBHOOK"]}
MoneyStatementStatus
Description
Money statement analysis status
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"UNKNOWN"
MoneyStatementStatusFilterInput
Fields
| Input Field | Description |
|---|---|
eq - MoneyStatementStatus
|
|
ne - MoneyStatementStatus
|
|
in - [MoneyStatementStatus!]
|
|
notIn - [MoneyStatementStatus!]
|
Example
{"eq": "UNKNOWN", "ne": "UNKNOWN", "in": ["UNKNOWN"], "notIn": ["UNKNOWN"]}
MoneyStatementType
Description
Type of money statement
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"MPESA"
MoneyStatementTypeFilterInput
Fields
| Input Field | Description |
|---|---|
eq - MoneyStatementType
|
|
ne - MoneyStatementType
|
|
in - [MoneyStatementType!]
|
|
notIn - [MoneyStatementType!]
|
Example
{"eq": "MPESA", "ne": "MPESA", "in": ["MPESA"], "notIn": ["MPESA"]}
Partner
AgentCategoryEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"INTERNAL_EMPLOYEE"
AgentPermissionsNamespace
Fields
| Field Name | Description |
|---|---|
agentTypePermissions - AgentTypePermissionsObjectType!
|
Get feature permissions for a specific agent type, optionally scoped by parent agent type. Child composite overrides are included under childPermissions. |
Arguments
|
|
allAgentTypePermissions - [AgentTypePermissionsObjectType!]!
|
Get feature permissions for all agent types. Each entry includes childPermissions for any composite overrides where this type is the parent. |
permissionCatalog - PermissionCatalogType!
|
Full catalog of available resources and actions for building a permission editor UI |
setAgentTypePermissions - AgentTypePermissionsObjectType!
|
Replace the full permission list for an agent type (admin only). Pass parentAgentType to set a composite override. |
Arguments |
|
resetAgentTypePermissions - AgentTypePermissionsObjectType!
|
Reset permissions for an agent type back to empty. |
Arguments
|
|
deleteChildPermissions - AgentTypePermissionsObjectType!
|
Remove a child agent type permission override from its parent config. Returns the updated parent permissions. |
Arguments
|
|
Example
{
"agentTypePermissions": AgentTypePermissionsObjectType,
"allAgentTypePermissions": [
AgentTypePermissionsObjectType
],
"permissionCatalog": PermissionCatalogType,
"setAgentTypePermissions": AgentTypePermissionsObjectType,
"resetAgentTypePermissions": AgentTypePermissionsObjectType,
"deleteChildPermissions": AgentTypePermissionsObjectType
}
AgentProfileFilterInput
Fields
| Input Field | Description |
|---|---|
agent_profile_id - String
|
|
user_id - ID
|
|
agent_category - AgentCategoryEnum
|
|
agent_type - AgentTypeEnum
|
|
agent_status - AgentStatusEnum
|
|
kyc_status - KYCStatusEnum
|
|
is_deleted - Boolean
|
|
created_by - String
|
|
user - UserFilterInput
|
Example
{
"agent_profile_id": "xyz789",
"user_id": "4",
"agent_category": "INTERNAL_EMPLOYEE",
"agent_type": "SFM",
"agent_status": "ACTIVE",
"kyc_status": "NOT_SUBMITTED",
"is_deleted": true,
"created_by": "abc123",
"user": UserFilterInput
}
AgentProfileNamespace
Fields
| Field Name | Description |
|---|---|
agentProfile - AgentProfileObjectType
|
Get agent profile by agent_profile_id |
Arguments
|
|
agentProfileByUserId - AgentProfileObjectType
|
Get agent profile by user_id |
Arguments
|
|
agentProfileByFilters - AgentProfileObjectType
|
Get agent profile by filters |
Arguments
|
|
agentProfiles - [AgentProfileObjectType!]!
|
Get all agent profiles with filters |
Arguments
|
|
agentExists - Boolean!
|
Check if agent profile exists for user |
Arguments
|
|
agentProfilesOffset - OffsetPaginatedAgentProfiles!
|
Get agent profiles with offset pagination |
Arguments
|
|
agentProfilesCursor - CursorPaginatedAgentProfiles!
|
Get agent profiles with cursor pagination |
Arguments
|
|
updateAgentProfile - AgentProfileObjectType!
|
Update agent profile |
Arguments
|
|
updateAgentStatus - AgentProfileObjectType!
|
Update agent profile status (activate, deactivate, or terminate) |
Arguments |
|
deleteAgent - Boolean!
|
Delete agent profile (soft delete) |
Example
{
"agentProfile": AgentProfileObjectType,
"agentProfileByUserId": AgentProfileObjectType,
"agentProfileByFilters": AgentProfileObjectType,
"agentProfiles": [AgentProfileObjectType],
"agentExists": false,
"agentProfilesOffset": OffsetPaginatedAgentProfiles,
"agentProfilesCursor": CursorPaginatedAgentProfiles,
"updateAgentProfile": AgentProfileObjectType,
"updateAgentStatus": AgentProfileObjectType,
"deleteAgent": true
}
AgentProfileObjectType
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
agent_profile_id - String!
|
|
user_id - UserObjectType
|
|
agent_category - AgentCategoryEnum!
|
|
agent_type - AgentTypeEnum!
|
|
agent_status - AgentStatusEnum!
|
|
kyc_status - KYCStatusEnum!
|
|
staff_document_ref - InternalStaffProfileObjectType
|
|
partner_document_ref - PartnerProfileObjectType
|
|
is_deleted - Boolean!
|
|
created_by - UserObjectType
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
|
permissions - [ResourcePermissionType!]
|
Example
{
"_id": "4",
"agent_profile_id": "abc123",
"user_id": UserObjectType,
"agent_category": "INTERNAL_EMPLOYEE",
"agent_type": "SFM",
"agent_status": "ACTIVE",
"kyc_status": "NOT_SUBMITTED",
"staff_document_ref": InternalStaffProfileObjectType,
"partner_document_ref": PartnerProfileObjectType,
"is_deleted": false,
"created_by": UserObjectType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"permissions": [ResourcePermissionType]
}
AgentStatusEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"ACTIVE"
AgentTypeEnum
Description
Types of agents that can work in a shop
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"SFM"
AgentTypePermissionsObjectType
Fields
| Field Name | Description |
|---|---|
agent_type - String!
|
The agent type these permissions apply to |
parent_agent_type - String
|
Parent agent type context, when permissions are composite (e.g. SUPER_AGENT for an ONLINE_AGENT under a super agent) |
permissions - [ResourcePermissionType!]!
|
Active permission grants for this agent type |
is_customized - Boolean!
|
True when permissions are overridden via dynamic config; false when using compiled defaults |
childPermissions - [AgentTypePermissionsObjectType!]
|
Composite permission sets for child agent types that operate under this agent type. Only populated when this is a parent type. |
Example
{
"agent_type": "abc123",
"parent_agent_type": "xyz789",
"permissions": [ResourcePermissionType],
"is_customized": true,
"childPermissions": [AgentTypePermissionsObjectType]
}
AgentWorkloadRowType
Fields
| Field Name | Description |
|---|---|
_id - ID
|
Null when the user record could not be resolved |
firstName - String!
|
|
lastName - String!
|
|
email - String!
|
|
totalApplications - Int!
|
|
activeApplications - Int!
|
|
queueStateCounts - QueueStateCountsType!
|
|
isInAgentGroup - Boolean!
|
Whether the agent belongs to the queue agent group |
averageProcessingTime - Float!
|
Average processing time for this agent in milliseconds |
medianProcessingTime - Float!
|
Median processing time for this agent in milliseconds |
averageIdleTime - Float!
|
Average time between completing one application and starting the next, in milliseconds |
medianIdleTime - Float!
|
Median time between completing one application and starting the next, in milliseconds |
averageFirstTouchTime - Float!
|
Average time between assignment and first action, in milliseconds |
medianFirstTouchTime - Float!
|
Median time between assignment and first action, in milliseconds |
resubmissionCount - Int
|
Resubmission count for this agent (SCORING queue only) |
capacityUtilization - Float!
|
Percentage of agent capacity used (based on target capacity) |
callActivity - CallActivityStatsType
|
Actual call activity for this agent from application_call_details (CREDIT_CALL queue only) |
Example
{
"_id": "4",
"firstName": "abc123",
"lastName": "abc123",
"email": "xyz789",
"totalApplications": 123,
"activeApplications": 987,
"queueStateCounts": QueueStateCountsType,
"isInAgentGroup": true,
"averageProcessingTime": 123.45,
"medianProcessingTime": 987.65,
"averageIdleTime": 123.45,
"medianIdleTime": 987.65,
"averageFirstTouchTime": 987.65,
"medianFirstTouchTime": 987.65,
"resubmissionCount": 987,
"capacityUtilization": 987.65,
"callActivity": CallActivityStatsType
}
CohortEnrollmentInput
CohortEnrollmentObjectType
CohortFilterInput
Fields
| Input Field | Description |
|---|---|
cohort_id - String
|
|
cohort_name - String
|
|
cohort_type - CohortType
|
|
training_track - PartnerTrackEnum
|
|
cohort_status - CohortStatus
|
|
assigned_sfm_id - String
|
|
assigned_trainer_ids - [String!]
|
|
region - String
|
|
start_date_from - DateTime
|
|
start_date_to - DateTime
|
|
end_date_from - DateTime
|
|
end_date_to - DateTime
|
|
min_capacity - Int
|
|
max_capacity - Int
|
|
min_enrollment - Int
|
|
max_enrollment - Int
|
|
cohort_ids - [String!]
|
|
cohort_statuses - [CohortStatus!]
|
|
cohort_types - [CohortType!]
|
Example
{
"cohort_id": "xyz789",
"cohort_name": "abc123",
"cohort_type": "AGENT_ONBOARDING",
"training_track": "SALES",
"cohort_status": "PLANNED",
"assigned_sfm_id": "xyz789",
"assigned_trainer_ids": ["xyz789"],
"region": "abc123",
"start_date_from": "2007-12-03T10:15:30Z",
"start_date_to": "2007-12-03T10:15:30Z",
"end_date_from": "2007-12-03T10:15:30Z",
"end_date_to": "2007-12-03T10:15:30Z",
"min_capacity": 123,
"max_capacity": 987,
"min_enrollment": 987,
"max_enrollment": 987,
"cohort_ids": ["xyz789"],
"cohort_statuses": ["PLANNED"],
"cohort_types": ["AGENT_ONBOARDING"]
}
CohortNamespace
Fields
| Field Name | Description |
|---|---|
cohort - CohortObjectType
|
Get cohort by ID |
Arguments
|
|
cohortByCohortId - CohortObjectType
|
Get cohort by Cohort ID |
Arguments
|
|
cohortbyFilters - CohortObjectType
|
Get cohort by filters |
Arguments
|
|
checkCohortCapacity - Boolean!
|
Check cohort capacity availability |
Arguments
|
|
checkCohortAvailableCapacity - Float!
|
Check cohort available capacity |
Arguments
|
|
cohortsOffset - OffsetPaginatedCohorts!
|
|
Arguments |
|
cohortsCursor - CursorPaginatedCohorts!
|
|
Arguments
|
|
createCohort - CohortObjectType!
|
Create a new cohort |
Arguments
|
|
updateCohort - CohortObjectType!
|
Update cohort details |
Arguments
|
|
updateCohortStatus - CohortObjectType!
|
Update cohort status |
Arguments
|
|
addAgentToCohort - CohortObjectType!
|
Add agent to cohort |
Arguments
|
|
removeAgentFromCohort - CohortObjectType!
|
Remove agent from cohort |
Arguments
|
|
assignTrainerToCohort - CohortObjectType!
|
Assign trainer to cohort |
Arguments
|
|
removeTrainerFromCohort - CohortObjectType!
|
Remove trainer from cohort |
Arguments
|
|
startCohort - CohortObjectType!
|
Start cohort training |
completeCohort - CohortObjectType!
|
Complete cohort training |
cancelCohort - CohortObjectType!
|
Cancel cohort |
graduateAgentFromCohort - Boolean!
|
Graduate agent from cohort |
deleteCohort - Boolean!
|
Delete cohort |
Example
{
"cohort": CohortObjectType,
"cohortByCohortId": CohortObjectType,
"cohortbyFilters": CohortObjectType,
"checkCohortCapacity": false,
"checkCohortAvailableCapacity": 123.45,
"cohortsOffset": OffsetPaginatedCohorts,
"cohortsCursor": CursorPaginatedCohorts,
"createCohort": CohortObjectType,
"updateCohort": CohortObjectType,
"updateCohortStatus": CohortObjectType,
"addAgentToCohort": CohortObjectType,
"removeAgentFromCohort": CohortObjectType,
"assignTrainerToCohort": CohortObjectType,
"removeTrainerFromCohort": CohortObjectType,
"startCohort": CohortObjectType,
"completeCohort": CohortObjectType,
"cancelCohort": CohortObjectType,
"graduateAgentFromCohort": true,
"deleteCohort": true
}
CohortObjectType
Fields
| Field Name | Description |
|---|---|
_id - ID
|
|
id - String
|
|
cohort_id - String!
|
|
cohort_name - String
|
|
cohort_type - CohortType!
|
|
training_track - PartnerTrackEnum!
|
|
cohort_status - CohortStatus!
|
|
start_date - DateTime
|
|
end_date - DateTime
|
|
duration_weeks - Float
|
|
assigned_sfm_id - InternalStaffProfileObjectType
|
|
assigned_trainer_ids - [InternalStaffProfileObjectType!]!
|
|
enrolled_agent_ids - [AgentProfileObjectType!]!
|
|
max_capacity - Float!
|
|
current_enrollment - Float!
|
|
graduation_count - Float!
|
|
dropout_count - Float!
|
|
training_location - String
|
|
region - String
|
|
curriculum_modules - [String!]
|
|
notes - String
|
|
created_by - UserObjectType
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
Example
{
"_id": "4",
"id": "xyz789",
"cohort_id": "abc123",
"cohort_name": "abc123",
"cohort_type": "AGENT_ONBOARDING",
"training_track": "SALES",
"cohort_status": "PLANNED",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"duration_weeks": 987.65,
"assigned_sfm_id": InternalStaffProfileObjectType,
"assigned_trainer_ids": [
InternalStaffProfileObjectType
],
"enrolled_agent_ids": [AgentProfileObjectType],
"max_capacity": 987.65,
"current_enrollment": 987.65,
"graduation_count": 987.65,
"dropout_count": 987.65,
"training_location": "abc123",
"region": "abc123",
"curriculum_modules": ["abc123"],
"notes": "abc123",
"created_by": UserObjectType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
CohortStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PLANNED"
CohortType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AGENT_ONBOARDING"
DealerNamespace
Fields
| Field Name | Description |
|---|---|
createDealerOwner - PartnerProfileObjectType!
|
Create Dealer Owner |
Arguments
|
|
createDealerAgent - PartnerProfileObjectType!
|
Create Dealer Agent |
Arguments
|
|
updateDealerOwner - PartnerProfileObjectType!
|
Update Dealer Owner |
Arguments
|
|
updateDealerAgent - PartnerProfileObjectType!
|
Update Dealer Agent |
Arguments
|
|
dealersOffset - OffsetPaginatedPartnerProfiles!
|
Get all Dealers with offset pagination |
Arguments
|
|
dealersCursor - CursorPaginatedPartnerProfiles!
|
Get agent profiles with cursor pagination |
Arguments
|
|
Example
{
"createDealerOwner": PartnerProfileObjectType,
"createDealerAgent": PartnerProfileObjectType,
"updateDealerOwner": PartnerProfileObjectType,
"updateDealerAgent": PartnerProfileObjectType,
"dealersOffset": OffsetPaginatedPartnerProfiles,
"dealersCursor": CursorPaginatedPartnerProfiles
}
InternalStaffNamespace
Fields
| Field Name | Description |
|---|---|
internalStaffProfile - InternalStaffProfileObjectType
|
Get staff by ID |
Arguments
|
|
internalStaffProfileByFilters - InternalStaffProfileObjectType
|
Get staff by filters |
Arguments
|
|
internalStaffProfileAll - [InternalStaffProfileObjectType!]
|
Get all staff |
Arguments
|
|
internalStaffOffset - OffsetPaginatedInternalStaffProfiles!
|
|
Arguments
|
|
internalStaffCursor - CursorPaginatedInternalStaffProfiles!
|
|
Arguments
|
|
staffExists - Boolean!
|
Check if staff exists by user ID |
Arguments
|
|
createInternalStaffProfile - InternalStaffProfileObjectType!
|
Create internal staff profile |
Arguments
|
|
updateInternalStaffProfile - InternalStaffProfileObjectType!
|
Update internal staff profile |
Arguments
|
|
assignStaffToShop - InternalStaffProfileObjectType!
|
Assign staff to shop |
Arguments
|
|
assignStaffToRegion - InternalStaffProfileObjectType!
|
Assign staff to region |
Arguments
|
|
updateStaffAvailability - InternalStaffProfileObjectType!
|
Update staff availability |
Arguments
|
|
removeStaffFromPartners - InternalStaffProfileObjectType!
|
Remove partners from staff profile |
Arguments
|
|
removeStaffFromShop - InternalStaffProfileObjectType!
|
Remove shop from staff profile |
Arguments
|
|
Example
{
"internalStaffProfile": InternalStaffProfileObjectType,
"internalStaffProfileByFilters": InternalStaffProfileObjectType,
"internalStaffProfileAll": [
InternalStaffProfileObjectType
],
"internalStaffOffset": OffsetPaginatedInternalStaffProfiles,
"internalStaffCursor": CursorPaginatedInternalStaffProfiles,
"staffExists": false,
"createInternalStaffProfile": InternalStaffProfileObjectType,
"updateInternalStaffProfile": InternalStaffProfileObjectType,
"assignStaffToShop": InternalStaffProfileObjectType,
"assignStaffToRegion": InternalStaffProfileObjectType,
"updateStaffAvailability": InternalStaffProfileObjectType,
"removeStaffFromPartners": InternalStaffProfileObjectType,
"removeStaffFromShop": InternalStaffProfileObjectType
}
InternalStaffProfileFilterInput
Fields
| Input Field | Description |
|---|---|
searchTerm - String
|
|
employee_id - String
|
|
operational_role - OperationalRoleEnum
|
|
department - DepartmentEnum
|
|
employment_type - EmploymentTypeEnum
|
|
assigned_shop_id - String
|
|
assigned_region - String
|
|
reports_to_id - String
|
|
is_offline - Boolean
|
|
agent_profile_id - String
|
|
partner_profile_id - String
|
|
staff_profile_ids - [String!]
|
|
employee_ids - [String!]
|
|
operational_roles - [OperationalRoleEnum!]
|
|
departments - [DepartmentEnum!]
|
|
assigned_regions - [String!]
|
|
start_date_from - DateTime
|
|
start_date_to - DateTime
|
|
end_date_from - DateTime
|
|
end_date_to - DateTime
|
|
created_from - DateTime
|
|
created_to - DateTime
|
|
agent - AgentProfileFilterInput
|
Example
{
"searchTerm": "abc123",
"employee_id": "abc123",
"operational_role": "SALES_FORCE_MANAGER",
"department": "SALES",
"employment_type": "FULL_TIME",
"assigned_shop_id": "xyz789",
"assigned_region": "xyz789",
"reports_to_id": "abc123",
"is_offline": false,
"agent_profile_id": "xyz789",
"partner_profile_id": "xyz789",
"staff_profile_ids": ["xyz789"],
"employee_ids": ["abc123"],
"operational_roles": ["SALES_FORCE_MANAGER"],
"departments": ["SALES"],
"assigned_regions": ["xyz789"],
"start_date_from": "2007-12-03T10:15:30Z",
"start_date_to": "2007-12-03T10:15:30Z",
"end_date_from": "2007-12-03T10:15:30Z",
"end_date_to": "2007-12-03T10:15:30Z",
"created_from": "2007-12-03T10:15:30Z",
"created_to": "2007-12-03T10:15:30Z",
"agent": AgentProfileFilterInput
}
InternalStaffProfileObjectType
Fields
| Field Name | Description |
|---|---|
_id - String!
|
|
id - String
|
|
partner_profile_id - String
|
|
operational_role - OperationalRoleEnum!
|
|
department - DepartmentEnum!
|
|
employee_id - String
|
|
employment_type - EmploymentTypeEnum!
|
|
reports_to_id - PartnerProfileObjectType
|
|
team_members - [UserObjectType!]!
|
|
assigned_shop_id - PartnerProfileObjectType
|
|
assigned_region - String
|
|
assigned_territory - TerritoryType
|
|
assigned_cohorts - [CohortObjectType!]!
|
|
assigned_sfm_partners - [PartnerProfileObjectType!]!
|
|
assigned_promoter_partners - [PartnerProfileObjectType!]!
|
|
work_schedule - WorkScheduleType
|
|
is_offline - Boolean!
|
|
kyc_metadata - KYCMetadataObjectType
|
|
created_by - String
|
|
agent_profile_id - AgentProfileObjectType
|
|
createdAt - DateTime!
|
|
updatedAt - DateTime!
|
Example
{
"_id": "abc123",
"id": "xyz789",
"partner_profile_id": "xyz789",
"operational_role": "SALES_FORCE_MANAGER",
"department": "SALES",
"employee_id": "abc123",
"employment_type": "FULL_TIME",
"reports_to_id": PartnerProfileObjectType,
"team_members": [UserObjectType],
"assigned_shop_id": PartnerProfileObjectType,
"assigned_region": "abc123",
"assigned_territory": TerritoryType,
"assigned_cohorts": [CohortObjectType],
"assigned_sfm_partners": [PartnerProfileObjectType],
"assigned_promoter_partners": [
PartnerProfileObjectType
],
"work_schedule": WorkScheduleType,
"is_offline": false,
"kyc_metadata": KYCMetadataObjectType,
"created_by": "xyz789",
"agent_profile_id": AgentProfileObjectType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
PartnerContactPersonInput
Example
{
"contact_first_name": "xyz789",
"contact_middle_name": "xyz789",
"contact_surname": "xyz789",
"contact_phone": "xyz789",
"contact_id_number": "xyz789",
"contact_email": "abc123",
"role": "xyz789"
}
PartnerKycNamespace
Fields
| Field Name | Description |
|---|---|
submitIndividualKYC - PartnerProfileObjectType!
|
Submit individual KYC documents for a partner (for individuals) |
Arguments
|
|
submitOrganizationKYC - PartnerProfileObjectType!
|
Submit organization KYC documents for a partner (for organizations) |
Arguments
|
|
submitStaffKYC - InternalStaffProfileObjectType!
|
Submit KYC documents for internal staff (passport photo only) |
Arguments
|
|
reviewKYC - AgentProfileObjectType!
|
Review and approve/reject KYC documents (works for both partner and staff) |
Arguments
|
|
requestPartnerKYCResubmission - AgentProfileObjectType!
|
Request KYC resubmission from a partner |
requestStaffKYCResubmission - AgentProfileObjectType!
|
Request KYC resubmission from a staff member |
partnersWithPendingKYC - [AgentProfileObjectType!]!
|
Get all partners with pending KYC review |
partnersWithRejectedKYC - [AgentProfileObjectType!]!
|
Get all partners with rejected KYC |
partnersWithIncompleteKYC - [AgentProfileObjectType!]!
|
Get all partners with incomplete KYC |
partnersWithApprovedKYC - [AgentProfileObjectType!]!
|
Get all partners with approved KYC |
getStaffKYC - InternalStaffProfileObjectType
|
Get staff KYC details by staff ID |
Arguments
|
|
Example
{
"submitIndividualKYC": PartnerProfileObjectType,
"submitOrganizationKYC": PartnerProfileObjectType,
"submitStaffKYC": InternalStaffProfileObjectType,
"reviewKYC": AgentProfileObjectType,
"requestPartnerKYCResubmission": AgentProfileObjectType,
"requestStaffKYCResubmission": AgentProfileObjectType,
"partnersWithPendingKYC": [AgentProfileObjectType],
"partnersWithRejectedKYC": [AgentProfileObjectType],
"partnersWithIncompleteKYC": [AgentProfileObjectType],
"partnersWithApprovedKYC": [AgentProfileObjectType],
"getStaffKYC": InternalStaffProfileObjectType
}
PartnerModuleNamespace
Fields
| Field Name | Description |
|---|---|
partnerProfile - PartnerProfileNamespace!
|
|
cohort - CohortNamespace!
|
|
agentProfile - AgentProfileNamespace!
|
|
internalStaff - InternalStaffNamespace!
|
|
partnerKyc - PartnerKycNamespace!
|
|
onlineAgent - OnlineAgentNamespace!
|
|
leadGeneration - LeadGenerationNamespace!
|
|
offlineAgent - OfflineAgentNamespace!
|
|
externalShop - ExternalShopNamespace!
|
|
dealer - DealerNamespace!
|
|
telesalesAgent - TelesalesAgentNamespace!
|
|
telesalesParentAgent - TelesalesParentAgentNamespace!
|
|
moShop - MoShopNamespace!
|
|
partnerOwner - PartnerOwnerNamespace!
|
|
trainer - TrainerNamespace!
|
|
sfm - SfmNamespace!
|
|
retailer - RetailerNamespace!
|
|
agentPermissions - AgentPermissionsNamespace!
|
Example
{
"partnerProfile": PartnerProfileNamespace,
"cohort": CohortNamespace,
"agentProfile": AgentProfileNamespace,
"internalStaff": InternalStaffNamespace,
"partnerKyc": PartnerKycNamespace,
"onlineAgent": OnlineAgentNamespace,
"leadGeneration": LeadGenerationNamespace,
"offlineAgent": OfflineAgentNamespace,
"externalShop": ExternalShopNamespace,
"dealer": DealerNamespace,
"telesalesAgent": TelesalesAgentNamespace,
"telesalesParentAgent": TelesalesParentAgentNamespace,
"moShop": MoShopNamespace,
"partnerOwner": PartnerOwnerNamespace,
"trainer": TrainerNamespace,
"sfm": SfmNamespace,
"retailer": RetailerNamespace,
"agentPermissions": AgentPermissionsNamespace
}
PartnerOwnerNamespace
Fields
| Field Name | Description |
|---|---|
createPartnerOwner - PartnerProfileObjectType!
|
Create Partner Owner |
Arguments
|
|
createPartnerShopAttendant - PartnerProfileObjectType!
|
Create Partner Shop Attendant |
Arguments
|
|
updatePartnerOwner - PartnerProfileObjectType!
|
Update Partner Owner |
Arguments
|
|
updatePartnerShopAttendant - PartnerProfileObjectType!
|
Update Partner Shop Attendant |
Arguments
|
|
createSellerForPartner - PartnerProfileObjectType!
|
Create seller for partner |
Arguments
|
|
partnerOwnersOffset - OffsetPaginatedPartnerProfiles!
|
Get all Partner Owners with offset pagination |
Arguments
|
|
Example
{
"createPartnerOwner": PartnerProfileObjectType,
"createPartnerShopAttendant": PartnerProfileObjectType,
"updatePartnerOwner": PartnerProfileObjectType,
"updatePartnerShopAttendant": PartnerProfileObjectType,
"createSellerForPartner": PartnerProfileObjectType,
"partnerOwnersOffset": OffsetPaginatedPartnerProfiles
}
PartnerProfileFilterInput
Fields
| Input Field | Description |
|---|---|
searchTerm - String
|
|
partner_profile_id - String
|
|
channel_type - ChannelTypeEnum
|
|
channel_category - ChannelCategoryEnum
|
|
partner_track - PartnerTrackEnum
|
|
entity_type - EntityTypeEnum
|
|
partner_status - PartnerStatusEnum
|
|
assignment_status - AssignmentStatusEnum
|
|
kyc_status - KYCStatusEnum
|
|
training_status - TrainingStatusEnum
|
|
assigned_sfm_id - String
|
|
assigned_promoter_id - String
|
|
assigned_trainer_id - String
|
|
current_cohort_id - String
|
|
assigned_shop_id - String
|
|
reports_to_id - String
|
|
shop_based - Boolean
|
|
platform_owner - Boolean
|
|
county - String
|
|
sub_county - String
|
|
region - String
|
|
partner_profile_ids - [String!]
|
|
channel_types - [ChannelTypeEnum!]
|
|
partner_statuses - [PartnerStatusEnum!]
|
|
created_from - DateTime
|
|
created_to - DateTime
|
|
activated_from - DateTime
|
|
activated_to - DateTime
|
|
agent_profile_id - String
|
|
kyc_metadata - KYCMetadataFilterInput
|
|
shop_metadata - KYCMetadataFilterInput
|
|
agent - AgentProfileFilterInput
|
|
is_owner - Boolean
|
Example
{
"searchTerm": "xyz789",
"partner_profile_id": "xyz789",
"channel_type": "ONLINE_AGENT",
"channel_category": "IN_HOUSE",
"partner_track": "SALES",
"entity_type": "INDIVIDUAL",
"partner_status": "PROSPECT",
"assignment_status": "UNASSIGNED",
"kyc_status": "NOT_SUBMITTED",
"training_status": "NOT_REQUIRED",
"assigned_sfm_id": "abc123",
"assigned_promoter_id": "abc123",
"assigned_trainer_id": "xyz789",
"current_cohort_id": "abc123",
"assigned_shop_id": "xyz789",
"reports_to_id": "abc123",
"shop_based": false,
"platform_owner": false,
"county": "xyz789",
"sub_county": "xyz789",
"region": "xyz789",
"partner_profile_ids": ["xyz789"],
"channel_types": ["ONLINE_AGENT"],
"partner_statuses": ["PROSPECT"],
"created_from": "2007-12-03T10:15:30Z",
"created_to": "2007-12-03T10:15:30Z",
"activated_from": "2007-12-03T10:15:30Z",
"activated_to": "2007-12-03T10:15:30Z",
"agent_profile_id": "xyz789",
"kyc_metadata": KYCMetadataFilterInput,
"shop_metadata": KYCMetadataFilterInput,
"agent": AgentProfileFilterInput,
"is_owner": false
}
PartnerProfileNamespace
Fields
| Field Name | Description |
|---|---|
createPartnerProfile - PartnerProfileObjectType!
|
Create a new partner profile |
Arguments
|
|
updatePartnerProfile - PartnerProfileObjectType!
|
Update partner profile |
Arguments
|
|
updatePartnerStatus - PartnerProfileObjectType!
|
Update partner status: Activate/Deactivate/Suspend/Reactivate |
Arguments
|
|
deletePartnerProfile - Boolean!
|
Delete partner profile |
partnerProfile - PartnerProfileObjectType
|
Get partner profile by ID |
Arguments
|
|
partnerProfileByFilters - PartnerProfileObjectType
|
Get partner profile by filters |
Arguments
|
|
partnerProfiles - [PartnerProfileObjectType!]!
|
Get all partners with filters |
Arguments
|
|
directReports - [PartnerProfileObjectType!]!
|
Get direct reports (downlines) |
Arguments
|
|
allDownlines - [PartnerProfileObjectType!]!
|
Get all downlines (recursive) |
Arguments
|
|
ancestors - [PartnerProfileObjectType!]!
|
Get partner hierarchy ancestors |
Arguments
|
|
parentPartner - PartnerProfileObjectType
|
Get parent partner |
Arguments
|
|
partnerExists - Boolean!
|
Check if partner exists by user ID |
Arguments
|
|
partnersProfileOffset - OffsetPaginatedPartnerProfiles!
|
|
Arguments
|
|
partnersProfileCursor - CursorPaginatedPartnerProfiles!
|
|
Arguments
|
|
Example
{
"createPartnerProfile": PartnerProfileObjectType,
"updatePartnerProfile": PartnerProfileObjectType,
"updatePartnerStatus": PartnerProfileObjectType,
"deletePartnerProfile": false,
"partnerProfile": PartnerProfileObjectType,
"partnerProfileByFilters": PartnerProfileObjectType,
"partnerProfiles": [PartnerProfileObjectType],
"directReports": [PartnerProfileObjectType],
"allDownlines": [PartnerProfileObjectType],
"ancestors": [PartnerProfileObjectType],
"parentPartner": PartnerProfileObjectType,
"partnerExists": false,
"partnersProfileOffset": OffsetPaginatedPartnerProfiles,
"partnersProfileCursor": CursorPaginatedPartnerProfiles
}
PartnerProfileObjectType
Fields
| Field Name | Description |
|---|---|
_id - ID
|
|
id - String
|
|
channel_type - ChannelTypeEnum!
|
|
channel_category - ChannelCategoryEnum!
|
|
partner_track - PartnerTrackEnum!
|
|
entity_type - EntityTypeEnum!
|
|
is_owner - Boolean!
|
|
platform_owner - Boolean!
|
|
is_active - Boolean!
|
|
is_deleted - Boolean!
|
|
owner_user_id - String
|
|
staff_user_ids - [UserObjectType!]!
|
|
reports_to_id - PartnerProfileObjectType
|
|
hierarchy_depth - Float!
|
|
hierarchy_path - [String!]!
|
|
downline_partner_ids - [String!]!
|
|
whatsapp_number - String
|
|
secondary_number - String
|
|
location_details - LocationDetailsObjectType
|
|
partner_status - PartnerStatusEnum!
|
|
assignment_status - AssignmentStatusEnum!
|
|
training_status - TrainingStatusEnum
|
|
current_cohort_id - CohortObjectType
|
|
assigned_trainer_id - String
|
|
assigned_sfm_id - String
|
|
assigned_sfm - InternalStaffProfileObjectType
|
|
assigned_promoter_id - String
|
|
assigned_promoter - InternalStaffProfileObjectType
|
|
graduation_date - DateTime
|
|
cohort_history - [CohortEnrollmentObjectType!]!
|
|
assigned_shop_id - String
|
|
shop_based - Boolean!
|
|
outlets - [RetailerOutletObjectType!]
|
|
shop_metadata - StaticShopMetadataObjectType
|
|
kyc_metadata - KYCMetadataObjectType
|
|
activation_date - DateTime
|
|
reactivation_date - DateTime
|
|
deactivation_date - DateTime
|
|
created_by - UserObjectType
|
|
agent_profile_id - AgentProfileObjectType
|
|
shop_manager_id - InternalStaffProfileObjectType
|
|
seller_id - SellerObjectType
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
Example
{
"_id": 4,
"id": "abc123",
"channel_type": "ONLINE_AGENT",
"channel_category": "IN_HOUSE",
"partner_track": "SALES",
"entity_type": "INDIVIDUAL",
"is_owner": true,
"platform_owner": true,
"is_active": true,
"is_deleted": true,
"owner_user_id": "abc123",
"staff_user_ids": [UserObjectType],
"reports_to_id": PartnerProfileObjectType,
"hierarchy_depth": 123.45,
"hierarchy_path": ["xyz789"],
"downline_partner_ids": ["xyz789"],
"whatsapp_number": "abc123",
"secondary_number": "xyz789",
"location_details": LocationDetailsObjectType,
"partner_status": "PROSPECT",
"assignment_status": "UNASSIGNED",
"training_status": "NOT_REQUIRED",
"current_cohort_id": CohortObjectType,
"assigned_trainer_id": "abc123",
"assigned_sfm_id": "abc123",
"assigned_sfm": InternalStaffProfileObjectType,
"assigned_promoter_id": "xyz789",
"assigned_promoter": InternalStaffProfileObjectType,
"graduation_date": "2007-12-03T10:15:30Z",
"cohort_history": [CohortEnrollmentObjectType],
"assigned_shop_id": "abc123",
"shop_based": false,
"outlets": [RetailerOutletObjectType],
"shop_metadata": StaticShopMetadataObjectType,
"kyc_metadata": KYCMetadataObjectType,
"activation_date": "2007-12-03T10:15:30Z",
"reactivation_date": "2007-12-03T10:15:30Z",
"deactivation_date": "2007-12-03T10:15:30Z",
"created_by": UserObjectType,
"agent_profile_id": AgentProfileObjectType,
"shop_manager_id": InternalStaffProfileObjectType,
"seller_id": SellerObjectType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
PartnerStatusAction
Description
activate/deactivate/reactivate/suspend agent
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"ACTIVATE"
PartnerStatusEnum
Description
Status of partner in the system
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PROSPECT"
PartnerTrackEnum
Description
Partner training and onboarding tracks
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"SALES"
RetailerNamespace
Fields
| Field Name | Description |
|---|---|
createRetailerOrganization - PartnerProfileObjectType!
|
Create Retailer Organization (e.g., Carrefour, Naivas) |
Arguments
|
|
updateRetailerOrganization - PartnerProfileObjectType!
|
Update Retailer Organization |
Arguments
|
|
createRetailerOutlet - PartnerProfileObjectType!
|
Create Outlet under Retailer Organization |
Arguments
|
|
updateRetailerOutlet - PartnerProfileObjectType!
|
Update Retailer Outlet |
Arguments |
|
removeRetailerOutlet - PartnerProfileObjectType!
|
Remove Retailer Outlet (Soft Delete) |
Arguments
|
|
createRetailOutletStaff - InternalStaffProfileObjectType!
|
Create Retail Outlet Staff |
Arguments
|
|
updateRetailOutletStaff - InternalStaffProfileObjectType!
|
Update Retail Outlet Staff |
Arguments
|
|
assignStaffToOutlet - PartnerProfileObjectType!
|
Assign Staff to Outlet |
transferStaffBetweenOutlets - PartnerProfileObjectType!
|
Transfer Staff Between Outlets |
Arguments |
|
findRetailerOrganizationById - PartnerProfileObjectType!
|
Find Retailer Organization by ID |
Arguments
|
|
findOutletsByRetailerId - [RetailerOutletObjectType!]!
|
Find all outlets for a retailer organization |
findOutletById - RetailerOutletObjectType!
|
Find specific outlet by ID |
retailerOrganizationsOffset - OffsetPaginatedPartnerProfiles!
|
Get all Retailer Organizations with offset pagination |
Arguments
|
|
retailerOrganizationsCursor - CursorPaginatedPartnerProfiles!
|
Get Retailer Organizations with cursor pagination |
Arguments
|
|
Example
{
"createRetailerOrganization": PartnerProfileObjectType,
"updateRetailerOrganization": PartnerProfileObjectType,
"createRetailerOutlet": PartnerProfileObjectType,
"updateRetailerOutlet": PartnerProfileObjectType,
"removeRetailerOutlet": PartnerProfileObjectType,
"createRetailOutletStaff": InternalStaffProfileObjectType,
"updateRetailOutletStaff": InternalStaffProfileObjectType,
"assignStaffToOutlet": PartnerProfileObjectType,
"transferStaffBetweenOutlets": PartnerProfileObjectType,
"findRetailerOrganizationById": PartnerProfileObjectType,
"findOutletsByRetailerId": [RetailerOutletObjectType],
"findOutletById": RetailerOutletObjectType,
"retailerOrganizationsOffset": OffsetPaginatedPartnerProfiles,
"retailerOrganizationsCursor": CursorPaginatedPartnerProfiles
}
RetailerOutletInput
Fields
| Input Field | Description |
|---|---|
outlet_id - String!
|
|
outlet_name - String!
|
|
location - LocationDetailsInput!
|
|
outlet_staff_user_ids - [String!]
|
Example
{
"outlet_id": "abc123",
"outlet_name": "xyz789",
"location": LocationDetailsInput,
"outlet_staff_user_ids": ["abc123"]
}
RetailerOutletObjectType
Fields
| Field Name | Description |
|---|---|
outlet_id - String!
|
|
outlet_name - String!
|
|
location - LocationDetailsObjectType!
|
|
outlet_staff_user_ids - [String!]!
|
|
is_deleted - Boolean!
|
|
staff_details - [InternalStaffProfileObjectType!]!
|
Example
{
"outlet_id": "xyz789",
"outlet_name": "abc123",
"location": LocationDetailsObjectType,
"outlet_staff_user_ids": ["xyz789"],
"is_deleted": true,
"staff_details": [InternalStaffProfileObjectType]
}
TelesalesAgentNamespace
Fields
| Field Name | Description |
|---|---|
createTelesalesAgent - InternalStaffProfileObjectType!
|
Create Telesales Agent |
Arguments
|
|
updateTelesalesAgent - InternalStaffProfileObjectType!
|
Update Telesales Agent |
Arguments
|
|
telesalesAgent - InternalStaffProfileObjectType
|
Get Telesales Agent by ID |
Arguments
|
|
telesalesAgentByFilters - InternalStaffProfileObjectType
|
Get Telesales Agent by filters |
Arguments
|
|
telesalesAgents - [InternalStaffProfileObjectType!]!
|
Get all Telesales Agents |
Arguments
|
|
telesalesAgentsOffset - OffsetPaginatedInternalStaffProfiles!
|
Get Telesales Agents with offset pagination |
Arguments
|
|
telesalesAgentsCursor - CursorPaginatedInternalStaffProfiles!
|
Get Telesales Agents with cursor pagination |
Arguments
|
|
Example
{
"createTelesalesAgent": InternalStaffProfileObjectType,
"updateTelesalesAgent": InternalStaffProfileObjectType,
"telesalesAgent": InternalStaffProfileObjectType,
"telesalesAgentByFilters": InternalStaffProfileObjectType,
"telesalesAgents": [InternalStaffProfileObjectType],
"telesalesAgentsOffset": OffsetPaginatedInternalStaffProfiles,
"telesalesAgentsCursor": CursorPaginatedInternalStaffProfiles
}
TelesalesParentAgentNamespace
Fields
| Field Name | Description |
|---|---|
telesalesParentAgents - [PartnerProfileObjectType!]!
|
Get all telesales parent agents |
Arguments
|
|
telesalesParentAgentsOffset - OffsetPaginatedPartnerProfiles!
|
Get telesales parent agents with offset pagination |
Arguments
|
|
telesalesParentAgentsCursor - CursorPaginatedPartnerProfiles!
|
Get telesales parent agents with cursor pagination |
Arguments
|
|
telesalesAgentsByParent - [InternalStaffProfileObjectType!]!
|
Find telesales agents by parent agent ID |
Arguments
|
|
telesalesAgentsByParentOffset - OffsetPaginatedInternalStaffProfiles!
|
Find telesales agents by parent with offset pagination |
Arguments
|
|
telesalesAgentsByParentCursor - CursorPaginatedInternalStaffProfiles!
|
Find telesales agents by parent with cursor pagination |
Arguments
|
|
createTelesalesParentAgent - PartnerProfileObjectType!
|
Create telesales parent agent |
updateTelesalesParentAgent - PartnerProfileObjectType!
|
Update telesales parent agent |
Arguments
|
|
deleteTelesalesParentAgent - Boolean!
|
Delete telesales parent agent |
Example
{
"telesalesParentAgents": [PartnerProfileObjectType],
"telesalesParentAgentsOffset": OffsetPaginatedPartnerProfiles,
"telesalesParentAgentsCursor": CursorPaginatedPartnerProfiles,
"telesalesAgentsByParent": [
InternalStaffProfileObjectType
],
"telesalesAgentsByParentOffset": OffsetPaginatedInternalStaffProfiles,
"telesalesAgentsByParentCursor": CursorPaginatedInternalStaffProfiles,
"createTelesalesParentAgent": PartnerProfileObjectType,
"updateTelesalesParentAgent": PartnerProfileObjectType,
"deleteTelesalesParentAgent": true
}
TrainerNamespace
Fields
| Field Name | Description |
|---|---|
createTrainer - InternalStaffProfileObjectType!
|
Create Trainer |
Arguments
|
|
updateTrainer - InternalStaffProfileObjectType!
|
Update Trainer |
Arguments
|
|
trainersOffset - OffsetPaginatedInternalStaffProfiles!
|
Get all Trainers with offset pagination |
Arguments
|
|
Example
{
"createTrainer": InternalStaffProfileObjectType,
"updateTrainer": InternalStaffProfileObjectType,
"trainersOffset": OffsetPaginatedInternalStaffProfiles
}
Territory
CountryFilterInput
CountryObjectType
Example
{
"_id": 4,
"name": "xyz789",
"iso_code": "xyz789",
"dial_code": "xyz789",
"currency": "xyz789",
"is_active": false,
"is_supported": false,
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"country_id": [RegionObjectType]
}
DistrictFilterInput
DistrictObjectType
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
name - String!
|
|
region_id - ID!
|
|
region - RegionObjectType
|
|
code - String!
|
|
is_active - Boolean!
|
|
metadata - JSON
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
|
district_id - [WardObjectType!]!
|
Example
{
"_id": 4,
"name": "abc123",
"region_id": "4",
"region": RegionObjectType,
"code": "xyz789",
"is_active": true,
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"district_id": [WardObjectType]
}
GeographyNamespace
Fields
| Field Name | Description |
|---|---|
countries - [CountryObjectType!]!
|
|
Arguments
|
|
country - CountryObjectType
|
|
Arguments
|
|
countryByFilter - CountryObjectType
|
|
Arguments
|
|
regions - [RegionObjectType!]!
|
|
regionByIsocode - [RegionObjectType!]!
|
Get regions for a country by ISO code |
region - RegionObjectType
|
|
Arguments
|
|
districts - [DistrictObjectType!]!
|
|
Arguments
|
|
district - DistrictObjectType
|
|
Arguments
|
|
wards - [WardObjectType!]!
|
|
Arguments
|
|
zones - [ZoneObjectType!]!
|
|
Arguments
|
|
zone - ZoneObjectType
|
|
Arguments
|
|
zonesByCoordinates - [ZoneObjectType!]!
|
|
ward - WardObjectType
|
|
Arguments
|
|
hierarchyPath - HierarchyPath
|
|
Arguments
|
|
tree - TerritoryTreeNode
|
|
Arguments
|
|
countriesCursor - CursorPaginatedCountries!
|
|
Arguments
|
|
regionsCursor - CursorPaginatedRegions!
|
|
Arguments
|
|
districtsCursor - CursorPaginatedDistricts!
|
|
Arguments
|
|
wardsCursor - CursorPaginatedWards!
|
|
Arguments |
|
updateRegion - RegionObjectType!
|
|
Arguments
|
|
updateZone - ZoneObjectType!
|
|
Arguments
|
|
createZone - ZoneObjectType!
|
|
Arguments
|
|
toggleRegionInZone - RegionObjectType!
|
|
Arguments
|
|
Example
{
"countries": [CountryObjectType],
"country": CountryObjectType,
"countryByFilter": CountryObjectType,
"regions": [RegionObjectType],
"regionByIsocode": [RegionObjectType],
"region": RegionObjectType,
"districts": [DistrictObjectType],
"district": DistrictObjectType,
"wards": [WardObjectType],
"zones": [ZoneObjectType],
"zone": ZoneObjectType,
"zonesByCoordinates": [ZoneObjectType],
"ward": WardObjectType,
"hierarchyPath": HierarchyPath,
"tree": TerritoryTreeNode,
"countriesCursor": CursorPaginatedCountries,
"regionsCursor": CursorPaginatedRegions,
"districtsCursor": CursorPaginatedDistricts,
"wardsCursor": CursorPaginatedWards,
"updateRegion": RegionObjectType,
"updateZone": ZoneObjectType,
"createZone": ZoneObjectType,
"toggleRegionInZone": RegionObjectType
}
HierarchyPath
Fields
| Field Name | Description |
|---|---|
country - HierarchyPathCountry!
|
|
region - HierarchyPathRegion!
|
|
district - HierarchyPathDistrict!
|
|
ward - HierarchyPathWard
|
|
zone - HierarchyPathZone
|
Example
{
"country": HierarchyPathCountry,
"region": HierarchyPathRegion,
"district": HierarchyPathDistrict,
"ward": HierarchyPathWard,
"zone": HierarchyPathZone
}
HierarchyPathCountry
HierarchyPathDistrict
HierarchyPathRegion
HierarchyPathWard
HierarchyPathZone
RegionFilterInput
RegionObjectType
Example
{
"_id": "4",
"name": "xyz789",
"country_id": "4",
"country": CountryObjectType,
"code": "abc123",
"is_active": true,
"is_in_zone": true,
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"region_id": [DistrictObjectType]
}
TerritoryAssignmentFilterInput
Example
{
"entity_type": "AGENT",
"territory_id": "4",
"entity_id": "xyz789",
"is_active": false,
"start_date": "xyz789",
"end_date": "abc123",
"unassignment_reason": "xyz789"
}
TerritoryAssignmentNamespace
Fields
| Field Name | Description |
|---|---|
entityTerritories - [TerritoryAssignmentObjectType!]!
|
|
Arguments
|
|
territoryEntities - [TerritoryAssignmentObjectType!]!
|
|
Arguments
|
|
history - [TerritoryAssignmentObjectType!]!
|
|
Arguments
|
|
list - [TerritoryAssignmentObjectType!]!
|
|
Arguments
|
|
assign - TerritoryAssignmentObjectType!
|
|
Arguments
|
|
unassign - TerritoryAssignmentObjectType!
|
|
Arguments
|
|
transfer - TerritoryTransferResultType!
|
|
Arguments
|
|
Example
{
"entityTerritories": [TerritoryAssignmentObjectType],
"territoryEntities": [TerritoryAssignmentObjectType],
"history": [TerritoryAssignmentObjectType],
"list": [TerritoryAssignmentObjectType],
"assign": TerritoryAssignmentObjectType,
"unassign": TerritoryAssignmentObjectType,
"transfer": TerritoryTransferResultType
}
TerritoryAssignmentObjectType
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
entity_id - String!
|
|
entity_type - EntityType!
|
|
territory_id - ID!
|
|
assigned_at - DateTime!
|
|
unassigned_at - DateTime
|
|
is_active - Boolean!
|
|
unassignment_reason - String
|
|
assigned_by - String
|
|
unassigned_by - String
|
|
metadata - JSON
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
Example
{
"_id": "4",
"entity_id": "abc123",
"entity_type": "AGENT",
"territory_id": 4,
"assigned_at": "2007-12-03T10:15:30Z",
"unassigned_at": "2007-12-03T10:15:30Z",
"is_active": false,
"unassignment_reason": "abc123",
"assigned_by": "abc123",
"unassigned_by": "xyz789",
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
TerritoryCoverageNamespace
Fields
| Field Name | Description |
|---|---|
forTerritory - [TerritoryCoverageObjectType!]!
|
|
Arguments
|
|
flagged - [TerritoryCoverageObjectType!]!
|
|
gaps - [TerritoryCoverageObjectType!]!
|
|
overlaps - [TerritoryCoverageObjectType!]!
|
|
resolve - TerritoryCoverageObjectType!
|
|
Arguments
|
|
Example
{
"forTerritory": [TerritoryCoverageObjectType],
"flagged": [TerritoryCoverageObjectType],
"gaps": [TerritoryCoverageObjectType],
"overlaps": [TerritoryCoverageObjectType],
"resolve": TerritoryCoverageObjectType
}
TerritoryCoverageObjectType
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
zone_id - ID!
|
|
zone - ZoneObjectType
|
|
territory_id - ID
|
|
territory - TerritoryObjectType
|
|
coverage_type - CoverageType!
|
|
entity_count - Int!
|
|
is_flagged - Boolean!
|
|
flag_reason - String
|
|
flagged_at - DateTime
|
|
resolved_at - DateTime
|
|
resolved_by - String
|
|
metadata - JSON
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
Example
{
"_id": 4,
"zone_id": 4,
"zone": ZoneObjectType,
"territory_id": "4",
"territory": TerritoryObjectType,
"coverage_type": "EXCLUSIVE",
"entity_count": 987,
"is_flagged": true,
"flag_reason": "abc123",
"flagged_at": "2007-12-03T10:15:30Z",
"resolved_at": "2007-12-03T10:15:30Z",
"resolved_by": "abc123",
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
TerritoryFilterInput
Fields
| Input Field | Description |
|---|---|
level - TerritoryLevel
|
|
region_id - ID
|
|
created_by - String
|
|
is_active - Boolean
|
Example
{
"level": "COUNTRY",
"region_id": "4",
"created_by": "xyz789",
"is_active": false
}
TerritoryInput
TerritoryLevel
Description
Territory hierarchical levels
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"COUNTRY"
TerritoryModuleNamespace
Fields
| Field Name | Description |
|---|---|
geography - GeographyNamespace!
|
|
territory - TerritoryNamespace!
|
|
territoryAssignment - TerritoryAssignmentNamespace!
|
|
territoryCoverage - TerritoryCoverageNamespace!
|
Example
{
"geography": GeographyNamespace,
"territory": TerritoryNamespace,
"territoryAssignment": TerritoryAssignmentNamespace,
"territoryCoverage": TerritoryCoverageNamespace
}
TerritoryNamespace
Fields
| Field Name | Description |
|---|---|
list - [TerritoryObjectType!]!
|
|
Arguments
|
|
get - TerritoryObjectType
|
|
Arguments
|
|
byRegion - [TerritoryObjectType!]!
|
|
Arguments
|
|
byLevel - [TerritoryObjectType!]!
|
|
Arguments
|
|
create - TerritoryObjectType!
|
|
Arguments
|
|
update - TerritoryObjectType!
|
|
Arguments
|
|
deactivate - TerritoryObjectType!
|
|
Arguments
|
|
addWards - TerritoryObjectType!
|
|
removeWards - TerritoryObjectType!
|
|
addZones - TerritoryObjectType!
|
|
removeZones - TerritoryObjectType!
|
|
Example
{
"list": [TerritoryObjectType],
"get": TerritoryObjectType,
"byRegion": [TerritoryObjectType],
"byLevel": [TerritoryObjectType],
"create": TerritoryObjectType,
"update": TerritoryObjectType,
"deactivate": TerritoryObjectType,
"addWards": TerritoryObjectType,
"removeWards": TerritoryObjectType,
"addZones": TerritoryObjectType,
"removeZones": TerritoryObjectType
}
TerritoryObjectType
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
name - String!
|
|
description - String
|
|
level - TerritoryLevel!
|
|
ward_ids - [WardObjectType!]!
|
|
zone_ids - [ZoneObjectType!]!
|
|
region_id - RegionObjectType
|
|
is_active - Boolean!
|
|
created_by - String!
|
|
updated_by - String
|
|
metadata - JSON
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
Example
{
"_id": 4,
"name": "abc123",
"description": "abc123",
"level": "COUNTRY",
"ward_ids": [WardObjectType],
"zone_ids": [ZoneObjectType],
"region_id": RegionObjectType,
"is_active": true,
"created_by": "abc123",
"updated_by": "xyz789",
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
TerritoryTransferResultType
Fields
| Field Name | Description |
|---|---|
oldAssignment - TerritoryAssignmentObjectType!
|
|
newAssignment - TerritoryAssignmentObjectType!
|
Example
{
"oldAssignment": TerritoryAssignmentObjectType,
"newAssignment": TerritoryAssignmentObjectType
}
TerritoryTreeNode
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
name - String!
|
|
code - String
|
|
type - String!
|
|
children - [TerritoryTreeNode!]
|
Example
{
"id": "4",
"name": "xyz789",
"code": "xyz789",
"type": "xyz789",
"children": [TerritoryTreeNode]
}
TerritoryType
Fields
| Field Name | Description |
|---|---|
counties - [String!]!
|
|
sub_counties - [String!]
|
|
coverage_area - String!
|
Example
{
"counties": ["xyz789"],
"sub_counties": ["abc123"],
"coverage_area": "xyz789"
}
WardFilterInput
WardObjectType
Example
{
"_id": "4",
"name": "xyz789",
"district_id": "4",
"district": DistrictObjectType,
"code": "xyz789",
"is_active": true,
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
ZoneFilterInput
ZoneObjectType
Example
{
"_id": 4,
"name": "abc123",
"ward_id": "4",
"district_id": 4,
"lat": 987.65,
"lng": 987.65,
"radius_km": 987.65,
"polygon": {},
"is_active": false,
"metadata": {},
"created_by": "abc123",
"updated_by": "xyz789",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
Auth
AuthResponse
Fields
| Field Name | Description |
|---|---|
access_token - String!
|
|
refresh_token - String!
|
|
expires_in - Int!
|
|
refresh_expires_in - Int!
|
|
token_type - String!
|
|
user - UserObjectType
|
|
customer - RawCustomersDto
|
Example
{
"access_token": "xyz789",
"refresh_token": "abc123",
"expires_in": 987,
"refresh_expires_in": 123,
"token_type": "abc123",
"user": UserObjectType,
"customer": RawCustomersDto
}
GroupFilterInput
GroupListResponse
Fields
| Field Name | Description |
|---|---|
groups - [GroupObjectType!]!
|
|
total - Int!
|
|
realm - String
|
Example
{
"groups": [GroupObjectType],
"total": 123,
"realm": "xyz789"
}
GroupMembershipInput
GroupMembershipResponse
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
|
message - String
|
|
group - GroupObjectType
|
Example
{
"success": true,
"message": "abc123",
"group": GroupObjectType
}
GroupObjectType
Fields
| Field Name | Description |
|---|---|
_id - String!
|
|
keycloak_id - String
|
|
name - String!
|
|
realm - String!
|
|
path - String
|
|
description - String
|
|
attributes - JSONObject
|
|
parent_id - String
|
|
children - [String!]!
|
|
level - Int!
|
|
member_keycloak_ids - [String!]!
|
|
member_count - Int!
|
|
synced_at - DateTime
|
|
is_active - Boolean!
|
|
created_at - DateTime
|
|
updated_at - DateTime
|
|
parent - GroupObjectType
|
|
childrenDetails - [GroupObjectType!]
|
Example
{
"_id": "xyz789",
"keycloak_id": "abc123",
"name": "abc123",
"realm": "xyz789",
"path": "xyz789",
"description": "xyz789",
"attributes": {},
"parent_id": "xyz789",
"children": ["abc123"],
"level": 123,
"member_keycloak_ids": ["abc123"],
"member_count": 987,
"synced_at": "2007-12-03T10:15:30Z",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"parent": GroupObjectType,
"childrenDetails": [GroupObjectType]
}
GroupTreeResponse
Fields
| Field Name | Description |
|---|---|
roots - [GroupObjectType!]!
|
|
totalGroups - Int!
|
|
realm - String!
|
Example
{
"roots": [GroupObjectType],
"totalGroups": 987,
"realm": "xyz789"
}
RoleFilterInput
RoleObjectType
Example
{
"_id": "xyz789",
"id": "xyz789",
"name": "abc123",
"level": 987,
"permissions": ["abc123"],
"description": "abc123",
"canManage": ["xyz789"],
"realm": "xyz789"
}
UserAvailabilityStatusEnum
Description
Current availability / shift status of a user
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"AVAILABLE"
UserFilterInput
Fields
| Input Field | Description |
|---|---|
user_id - String
|
|
keycloak_id - String
|
|
username - String
|
|
role - String
|
|
phone_number - String
|
|
email - String
|
|
first_name - String
|
|
surname - String
|
|
last_name - String
|
|
user_type - UserTypeEnum
|
|
availability_status - UserAvailabilityStatusEnum
|
|
enabled - Boolean
|
|
is_internal - Boolean
|
|
created_after - DateTime
|
|
created_before - DateTime
|
|
group_memberships - StringFilterInput
|
Filter by group memberships |
and - [UserFilterInput!]
|
All conditions must match |
or - [UserFilterInput!]
|
At least one condition must match |
Example
{
"user_id": "abc123",
"keycloak_id": "xyz789",
"username": "xyz789",
"role": "xyz789",
"phone_number": "abc123",
"email": "abc123",
"first_name": "abc123",
"surname": "abc123",
"last_name": "abc123",
"user_type": "SYSTEM_ADMIN",
"availability_status": "AVAILABLE",
"enabled": false,
"is_internal": false,
"created_after": "2007-12-03T10:15:30Z",
"created_before": "2007-12-03T10:15:30Z",
"group_memberships": StringFilterInput,
"and": [UserFilterInput],
"or": [UserFilterInput]
}
UserObjectType
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
id - String!
|
|
keycloak_id - String!
|
|
username - String!
|
|
email - String!
|
|
first_name - String
|
|
surname - String
|
|
last_name - String
|
|
phone_number - String
|
|
role - String
|
|
enabled - Boolean!
|
|
user_type - UserTypeEnum!
|
|
is_internal - Boolean!
|
|
first_login - DateTime
|
|
last_login - DateTime
|
|
availability_status - UserAvailabilityStatusEnum
|
|
synced_at - DateTime
|
|
group_memberships - [String!]
|
|
permissions - [String!]
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
Example
{
"_id": "4",
"id": "abc123",
"keycloak_id": "abc123",
"username": "xyz789",
"email": "abc123",
"first_name": "abc123",
"surname": "xyz789",
"last_name": "abc123",
"phone_number": "abc123",
"role": "abc123",
"enabled": false,
"user_type": "SYSTEM_ADMIN",
"is_internal": true,
"first_login": "2007-12-03T10:15:30Z",
"last_login": "2007-12-03T10:15:30Z",
"availability_status": "AVAILABLE",
"synced_at": "2007-12-03T10:15:30Z",
"group_memberships": ["xyz789"],
"permissions": ["abc123"],
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
UserRefInput
Fields
| Input Field | Description |
|---|---|
user_id - String
|
|
create_user - CreateSimpleUserInput
|
Example
{
"user_id": "xyz789",
"create_user": CreateSimpleUserInput
}
UserRoleConfigValueResponse
UserRoleConfigsNamespace
Fields
| Field Name | Description |
|---|---|
value - UserRoleConfigValueResponse!
|
Get a config value using the user→role→client→system fallback chain. User is always the current authenticated user. |
Arguments
|
|
myConfigs - [ConfigType!]!
|
Get all configs belonging to the current authenticated user |
roleConfigs - [ConfigType!]!
|
Get all configs for a role |
Arguments
|
|
setMyConfig - ConfigType!
|
Create or update a config for the current authenticated user. user_id is always derived from the auth token. |
Arguments
|
|
setRoleConfig - ConfigType!
|
Create or update a role-scoped config |
Arguments
|
|
deleteMyConfig - Boolean!
|
Delete a config key for the current authenticated user |
Arguments
|
|
deleteRoleConfig - Boolean!
|
Delete a role-scoped config by key |
Example
{
"value": UserRoleConfigValueResponse,
"myConfigs": [ConfigType],
"roleConfigs": [ConfigType],
"setMyConfig": ConfigType,
"setRoleConfig": ConfigType,
"deleteMyConfig": false,
"deleteRoleConfig": true
}
UserTypeEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"SYSTEM_ADMIN"
Config
ConfigCategory
Description
Configuration category
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"GENERAL"
ConfigCategoryFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ConfigCategory
|
|
ne - ConfigCategory
|
|
in - [ConfigCategory!]
|
|
notIn - [ConfigCategory!]
|
Example
{"eq": "GENERAL", "ne": "GENERAL", "in": ["GENERAL"], "notIn": ["GENERAL"]}
ConfigCursorPaginatedResponse
Description
Cursor paginated configs response
Fields
| Field Name | Description |
|---|---|
data - [ConfigType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ConfigType],
"pagination": CursorPaginationMetadata
}
ConfigDeleteResponse
ConfigExistsResponse
ConfigFilterInput
Description
Config filter input for queries
Fields
| Input Field | Description |
|---|---|
key - StringFilterInput
|
|
category - ConfigCategoryFilterInput
|
|
scope - ConfigScopeFilterInput
|
|
client_id - StringFilterInput
|
|
platform - ConfigPlatformFilterInput
|
|
status - ConfigStatusFilterInput
|
|
value_type - ConfigValueTypeFilterInput
|
|
is_versioned - BooleanFilterInput
|
|
is_ui_hidden - BooleanFilterInput
|
|
createdAt - DateFilterInput
|
|
updatedAt - DateFilterInput
|
|
or - [ConfigFilterInput!]
|
|
and - [ConfigFilterInput!]
|
Example
{
"key": StringFilterInput,
"category": ConfigCategoryFilterInput,
"scope": ConfigScopeFilterInput,
"client_id": StringFilterInput,
"platform": ConfigPlatformFilterInput,
"status": ConfigStatusFilterInput,
"value_type": ConfigValueTypeFilterInput,
"is_versioned": BooleanFilterInput,
"is_ui_hidden": BooleanFilterInput,
"createdAt": DateFilterInput,
"updatedAt": DateFilterInput,
"or": [ConfigFilterInput],
"and": [ConfigFilterInput]
}
ConfigModuleNamespace
Fields
| Field Name | Description |
|---|---|
configs - ConfigsNamespace!
|
|
userRoleConfigs - UserRoleConfigsNamespace!
|
|
sharedResources - SharedResourcesNamespace!
|
Example
{
"configs": ConfigsNamespace,
"userRoleConfigs": UserRoleConfigsNamespace,
"sharedResources": SharedResourcesNamespace
}
ConfigMutationResponse
Description
Config mutation response
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
|
message - String!
|
|
data - ConfigType
|
Example
{
"success": false,
"message": "xyz789",
"data": ConfigType
}
ConfigOffsetPaginatedResponse
Description
Offset paginated configs response
Fields
| Field Name | Description |
|---|---|
data - [ConfigType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ConfigType],
"metadata": OffsetPaginationMetadata
}
ConfigPlatformEnum
Description
Target platform for config
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"ALL"
ConfigPlatformFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ConfigPlatformEnum
|
|
ne - ConfigPlatformEnum
|
|
in - [ConfigPlatformEnum!]
|
|
notIn - [ConfigPlatformEnum!]
|
Example
{"eq": "ALL", "ne": "ALL", "in": ["ALL"], "notIn": ["ALL"]}
ConfigScopeFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ConfigSystemEnum
|
|
ne - ConfigSystemEnum
|
|
in - [ConfigSystemEnum!]
|
|
notIn - [ConfigSystemEnum!]
|
Example
{"eq": "SYSTEM", "ne": "SYSTEM", "in": ["SYSTEM"], "notIn": ["SYSTEM"]}
ConfigStatusEnum
Description
Config version status
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"DRAFT"
ConfigStatusFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ConfigStatusEnum
|
|
ne - ConfigStatusEnum
|
|
in - [ConfigStatusEnum!]
|
|
notIn - [ConfigStatusEnum!]
|
Example
{"eq": "DRAFT", "ne": "DRAFT", "in": ["DRAFT"], "notIn": ["DRAFT"]}
ConfigSystemEnum
Description
Configuration scope (system or client)
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"SYSTEM"
ConfigSystemType
Description
Configuration value type
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"STRING"
ConfigType
Description
Configuration record
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
key - String!
|
|
value - JSON!
|
|
options - [String!]
|
|
scope - ConfigSystemEnum!
|
|
client_id - ID
|
|
value_type - ConfigSystemType!
|
|
description - String
|
|
category - ConfigCategory!
|
|
is_active - Boolean!
|
|
is_encrypted - Boolean!
|
|
is_versioned - Boolean!
|
|
is_protected - Boolean!
|
|
is_ui_hidden - Boolean!
|
When true, this config is hidden from the config editor UI |
requires_validation - Boolean!
|
Whether the config value should be validated against its JSON schema. Defaults to true. |
value_schema - JSON
|
JSON Schema for validating the config value |
ui_hints - JSON
|
UI rendering hints for the config editor (e.g. component type) |
updated_by - String
|
|
platform - ConfigPlatformEnum
|
|
version - Int
|
|
status - ConfigStatusEnum
|
|
published_at - DateTime
|
|
published_by - String
|
|
parent_version_id - ID
|
Reference to parent version for version tracking |
createdAt - DateTime
|
|
updatedAt - DateTime
|
Example
{
"_id": "4",
"key": "abc123",
"value": {},
"options": ["abc123"],
"scope": "SYSTEM",
"client_id": "4",
"value_type": "STRING",
"description": "xyz789",
"category": "GENERAL",
"is_active": true,
"is_encrypted": true,
"is_versioned": true,
"is_protected": true,
"is_ui_hidden": false,
"requires_validation": false,
"value_schema": {},
"ui_hints": {},
"updated_by": "abc123",
"platform": "ALL",
"version": 123,
"status": "DRAFT",
"published_at": "2007-12-03T10:15:30Z",
"published_by": "xyz789",
"parent_version_id": 4,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
ConfigUpdatePayload
Description
Config update payload for subscriptions
Example
{
"key": "abc123",
"value": {},
"category": "abc123",
"clientId": "xyz789",
"timestamp": "2007-12-03T10:15:30Z"
}
ConfigValueResponse
ConfigValueTypeFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ConfigSystemType
|
|
ne - ConfigSystemType
|
|
in - [ConfigSystemType!]
|
|
notIn - [ConfigSystemType!]
|
Example
{"eq": "STRING", "ne": "STRING", "in": ["STRING"], "notIn": ["STRING"]}
ConfigVersionHistory
Description
Config version history entry
Example
{
"version": 987,
"value": {},
"status": "DRAFT",
"published_at": "2007-12-03T10:15:30Z",
"published_by": "xyz789",
"createdAt": "2007-12-03T10:15:30Z"
}
ConfigWithHistory
Description
Config with version history
Fields
| Field Name | Description |
|---|---|
key - String!
|
|
client_id - String
|
|
platform - ConfigPlatformEnum!
|
|
current - ConfigType
|
|
draft - ConfigType
|
|
history - [ConfigVersionHistory!]!
|
Example
{
"key": "xyz789",
"client_id": "xyz789",
"platform": "ALL",
"current": ConfigType,
"draft": ConfigType,
"history": [ConfigVersionHistory]
}
ConfigsNamespace
Fields
| Field Name | Description |
|---|---|
byId - ConfigType
|
Get config by ID |
Arguments
|
|
byFilters - ConfigType
|
Get config by filters |
Arguments
|
|
count - Float!
|
Count configs matching filters |
Arguments
|
|
value - ConfigValueResponse!
|
Get config value by key |
exists - ConfigExistsResponse!
|
Check if config key exists |
offsetPaginated - ConfigOffsetPaginatedResponse!
|
Get configs with offset pagination |
Arguments
|
|
cursorPaginated - ConfigCursorPaginatedResponse!
|
Get configs with cursor pagination |
Arguments
|
|
clientConfigs - JSON!
|
Get all configs for a client |
Arguments
|
|
byCategory - JSON!
|
Get configs by category |
inventory - InventoryUiConfigType!
|
Get typed inventory UI configs from category inventory |
Arguments
|
|
featureFlags - JSON!
|
Get all feature flags |
Arguments
|
|
isFeatureEnabled - FeatureStatusResponse!
|
Check if a feature flag is enabled |
withHistory - ConfigWithHistory
|
Get config with version history |
Arguments |
|
create - ConfigType!
|
Create a new config |
Arguments
|
|
updateById - ConfigType!
|
Update config by ID |
Arguments
|
|
updateMany - Int!
|
Update multiple configs matching filters |
Arguments
|
|
deleteById - Boolean!
|
Delete config by ID |
Arguments
|
|
deleteMany - Int!
|
Delete multiple configs matching filters |
Arguments
|
|
bulkCreate - BulkConfigMutationResponse!
|
Bulk create configs (max 100) |
Arguments
|
|
delete - ConfigDeleteResponse!
|
Delete config by key |
publish - ConfigMutationResponse!
|
Publish a versioned config |
Arguments
|
|
rollback - ConfigMutationResponse!
|
Rollback a versioned config |
Arguments
|
|
clearCache - CacheCleared!
|
Clear the config cache |
Example
{
"byId": ConfigType,
"byFilters": ConfigType,
"count": 123.45,
"value": ConfigValueResponse,
"exists": ConfigExistsResponse,
"offsetPaginated": ConfigOffsetPaginatedResponse,
"cursorPaginated": ConfigCursorPaginatedResponse,
"clientConfigs": {},
"byCategory": {},
"inventory": InventoryUiConfigType,
"featureFlags": {},
"isFeatureEnabled": FeatureStatusResponse,
"withHistory": ConfigWithHistory,
"create": ConfigType,
"updateById": ConfigType,
"updateMany": 123,
"deleteById": true,
"deleteMany": 123,
"bulkCreate": BulkConfigMutationResponse,
"delete": ConfigDeleteResponse,
"publish": ConfigMutationResponse,
"rollback": ConfigMutationResponse,
"clearCache": CacheCleared
}
FeatureStatusResponse
GateStatusPayload
Description
Gate status payload for subscriptions
Example
{
"gate": "xyz789",
"status": "xyz789",
"message": "xyz789",
"timestamp": "2007-12-03T10:15:30Z"
}
Communication
CommunicationFilterInput
Fields
| Input Field | Description |
|---|---|
_id - StringFilterInput
|
|
userId - StringFilterInput
|
|
channel - NotificationChannelFilterInput
|
|
status - NotificationStatusFilterInput
|
|
type - NotificationTypeFilterInput
|
|
campaignId - StringFilterInput
|
|
campaignName - StringFilterInput
|
|
tags - StringFilterInput
|
|
queueName - StringFilterInput
|
|
retryCount - IntFilterInput
|
|
priority - IntFilterInput
|
|
delivery - DeliveryInfoFilterInput
|
|
smsData - SmsDataFilterInput
|
|
scheduledFor - DateFilterInput
|
|
createdAt - DateFilterInput
|
|
updatedAt - DateFilterInput
|
|
or - [CommunicationFilterInput!]
|
|
and - [CommunicationFilterInput!]
|
Example
{
"_id": StringFilterInput,
"userId": StringFilterInput,
"channel": NotificationChannelFilterInput,
"status": NotificationStatusFilterInput,
"type": NotificationTypeFilterInput,
"campaignId": StringFilterInput,
"campaignName": StringFilterInput,
"tags": StringFilterInput,
"queueName": StringFilterInput,
"retryCount": IntFilterInput,
"priority": IntFilterInput,
"delivery": DeliveryInfoFilterInput,
"smsData": SmsDataFilterInput,
"scheduledFor": DateFilterInput,
"createdAt": DateFilterInput,
"updatedAt": DateFilterInput,
"or": [CommunicationFilterInput],
"and": [CommunicationFilterInput]
}
CommunicationModuleNamespace
Fields
| Field Name | Description |
|---|---|
communication - CommunicationObjectType
|
|
Arguments
|
|
communicationsOffset - OffsetPaginatedCommunications!
|
|
Arguments
|
|
communicationsCursor - CursorPaginatedCommunications!
|
|
Arguments
|
|
createCommunication - CommunicationObjectType!
|
|
Arguments
|
|
bulkCreateCommunications - [CommunicationObjectType!]!
|
|
Arguments
|
|
updateCommunication - CommunicationObjectType!
|
|
Arguments
|
|
retryCommunication - Boolean!
|
|
Arguments
|
|
markNotificationAsRead - CommunicationObjectType!
|
|
Arguments
|
|
markAllNotificationsAsRead - Int!
|
|
Arguments
|
|
trackNotificationClick - CommunicationObjectType!
|
|
Arguments
|
|
deleteCommunication - Boolean!
|
|
Arguments
|
|
deleteManyCommunications - Int!
|
|
Arguments
|
|
subscribeToTopic - Boolean!
|
|
Arguments
|
|
unsubscribeFromTopic - Boolean!
|
|
Arguments
|
|
subscribeToDefaultTopics - Boolean!
|
|
Arguments
|
|
unsubscribeFromDefaultTopics - Boolean!
|
|
Arguments
|
|
Example
{
"communication": CommunicationObjectType,
"communicationsOffset": OffsetPaginatedCommunications,
"communicationsCursor": CursorPaginatedCommunications,
"createCommunication": CommunicationObjectType,
"bulkCreateCommunications": [CommunicationObjectType],
"updateCommunication": CommunicationObjectType,
"retryCommunication": true,
"markNotificationAsRead": CommunicationObjectType,
"markAllNotificationsAsRead": 123,
"trackNotificationClick": CommunicationObjectType,
"deleteCommunication": false,
"deleteManyCommunications": 987,
"subscribeToTopic": true,
"unsubscribeFromTopic": true,
"subscribeToDefaultTopics": false,
"unsubscribeFromDefaultTopics": false
}
CommunicationObjectType
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
id - String!
|
|
userId - String!
|
|
channel - NotificationChannel!
|
|
status - NotificationStatus!
|
|
type - NotificationType
|
|
message - BaseMessageObjectType!
|
|
emailData - EmailDataObjectType
|
|
smsData - SmsDataObjectType
|
|
pushData - PushDataObjectType
|
|
inAppData - InAppDataObjectType
|
|
delivery - DeliveryInfoObjectType
|
|
retryCount - Int!
|
|
maxRetries - Int!
|
|
campaignId - String
|
|
campaignName - String
|
|
tags - [String!]
|
|
scheduledFor - DateTime
|
|
timezone - String
|
|
queueJobId - String
|
|
queueName - String
|
|
priority - Int
|
|
metadata - JSON
|
|
createdAt - DateTime!
|
|
updatedAt - DateTime!
|
Example
{
"_id": "4",
"id": "xyz789",
"userId": "xyz789",
"channel": "PUSH",
"status": "PENDING",
"type": "INFO",
"message": BaseMessageObjectType,
"emailData": EmailDataObjectType,
"smsData": SmsDataObjectType,
"pushData": PushDataObjectType,
"inAppData": InAppDataObjectType,
"delivery": DeliveryInfoObjectType,
"retryCount": 987,
"maxRetries": 987,
"campaignId": "abc123",
"campaignName": "abc123",
"tags": ["xyz789"],
"scheduledFor": "2007-12-03T10:15:30Z",
"timezone": "abc123",
"queueJobId": "xyz789",
"queueName": "abc123",
"priority": 987,
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
DeliveryAddress
DeliveryCallFilterInput
Fields
| Input Field | Description |
|---|---|
call_id - ID
|
|
order_id - ID
|
|
called_by - ID
|
|
outcome - DeliveryCallOutcomeEnum
|
|
confirmed_delivery_slot - DeliverySlotEnum
|
|
confirmed_delivery_type - ConfirmedDeliveryTypeEnum
|
|
confirmed_delivery_type_name - ConfirmedDeliveryTypeNameEnum
|
Example
{
"call_id": 4,
"order_id": "4",
"called_by": 4,
"outcome": "CALL_BACK",
"confirmed_delivery_slot": "MORNING",
"confirmed_delivery_type": "DELIVERY",
"confirmed_delivery_type_name": "MO"
}
DeliveryCallGeo
DeliveryCallObjectType
Fields
| Field Name | Description |
|---|---|
call_id - ID!
|
|
order_id - ID!
|
|
called_by - ID!
|
|
caller - UserObjectType
|
|
confirmed_delivery_location - ConfirmedDeliveryLocationObjectType
|
|
spec_preference - SpecPreferenceObjectType
|
|
confirmed_delivery_date - String
|
|
confirmed_delivery_slot - DeliverySlotEnum
|
|
call_time - DateTime!
|
|
outcome - DeliveryCallOutcomeEnum!
|
|
confirmed_delivery_type - ConfirmedDeliveryTypeEnum
|
|
confirmed_delivery_type_name - ConfirmedDeliveryTypeNameEnum
|
|
notes - String
|
|
metadata - JSON
|
|
created_at - DateTime!
|
|
order - OrderObjectType
|
Example
{
"call_id": "4",
"order_id": "4",
"called_by": "4",
"caller": UserObjectType,
"confirmed_delivery_location": ConfirmedDeliveryLocationObjectType,
"spec_preference": SpecPreferenceObjectType,
"confirmed_delivery_date": "xyz789",
"confirmed_delivery_slot": "MORNING",
"call_time": "2007-12-03T10:15:30Z",
"outcome": "CALL_BACK",
"confirmed_delivery_type": "DELIVERY",
"confirmed_delivery_type_name": "MO",
"notes": "xyz789",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"order": OrderObjectType
}
DeliveryCallOutcomeEnum
Description
Outcome of a delivery-related call
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CALL_BACK"
DeliveryFilterInput
Fields
| Input Field | Description |
|---|---|
delivery_id - ID
|
|
order_id - ID
|
|
seller_id - ID
|
|
assigned_rider_id - ID
|
|
delivery_status - DeliveryStatusEnum
|
|
delivery_status_any - [DeliveryStatusEnum!]
|
|
tracking_number - String
|
|
estimated_arrival - DateTime
|
|
actual_arrival - DateTime
|
|
created_at_from - DateTime
|
|
created_at_to - DateTime
|
|
order - OrderFilterInput
|
|
customer - RawCustomersFilterInput
|
Example
{
"delivery_id": 4,
"order_id": "4",
"seller_id": "4",
"assigned_rider_id": "4",
"delivery_status": "PENDING",
"delivery_status_any": ["PENDING"],
"tracking_number": "abc123",
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"created_at_from": "2007-12-03T10:15:30Z",
"created_at_to": "2007-12-03T10:15:30Z",
"order": OrderFilterInput,
"customer": RawCustomersFilterInput
}
DeliveryInfoFilterInput
Description
Filter by delivery tracking fields
Fields
| Input Field | Description |
|---|---|
provider - StringFilterInput
|
|
externalId - StringFilterInput
|
|
error - StringFilterInput
|
|
sentAt - DateFilterInput
|
|
deliveredAt - DateFilterInput
|
|
failedAt - DateFilterInput
|
|
readAt - DateFilterInput
|
|
clickedAt - DateFilterInput
|
Example
{
"provider": StringFilterInput,
"externalId": StringFilterInput,
"error": StringFilterInput,
"sentAt": DateFilterInput,
"deliveredAt": DateFilterInput,
"failedAt": DateFilterInput,
"readAt": DateFilterInput,
"clickedAt": DateFilterInput
}
DeliveryInfoObjectType
Example
{
"sentAt": "2007-12-03T10:15:30Z",
"deliveredAt": "2007-12-03T10:15:30Z",
"failedAt": "2007-12-03T10:15:30Z",
"readAt": "2007-12-03T10:15:30Z",
"clickedAt": "2007-12-03T10:15:30Z",
"error": "xyz789",
"externalId": "xyz789",
"provider": "xyz789",
"providerResponse": {}
}
DeliveryItemFilterInput
DeliveryItemObjectType
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
delivery_id - ID!
|
|
order_item_id - ID!
|
|
quantity_shipped - Float!
|
|
delivery - DeliveryObjectType
|
|
order_item - OrderItemObjectType
|
Example
{
"id": 4,
"delivery_id": 4,
"order_item_id": "4",
"quantity_shipped": 987.65,
"delivery": DeliveryObjectType,
"order_item": OrderItemObjectType
}
DeliveryObjectType
Fields
| Field Name | Description |
|---|---|
delivery_id - ID!
|
|
order_id - ID!
|
|
seller_id - ID!
|
|
assigned_rider_id - ID
|
|
delivery_status - DeliveryStatusEnum!
|
|
delivery_address - DeliveryAddress
|
|
tracking_number - String
|
|
provider_info - ProviderInfo
|
|
proof_of_delivery - ProofOfDelivery
|
|
delivery_notes - String
|
|
destination_location - GeoLocation
|
|
estimated_arrival - DateTime
|
|
actual_arrival - DateTime
|
|
metadata - JSON
|
|
assigned_rider - UserObjectType
|
|
seller - SellerObjectType
|
|
order - OrderObjectType!
|
|
items - [DeliveryItemObjectType!]
|
|
calls - [DeliveryCallObjectType!]
|
|
latestAnsweredCall - DeliveryCallObjectType
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
|
deliveryItems - [DeliveryItemObjectType!]!
|
Example
{
"delivery_id": "4",
"order_id": 4,
"seller_id": 4,
"assigned_rider_id": 4,
"delivery_status": "PENDING",
"delivery_address": DeliveryAddress,
"tracking_number": "abc123",
"provider_info": ProviderInfo,
"proof_of_delivery": ProofOfDelivery,
"delivery_notes": "xyz789",
"destination_location": GeoLocation,
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"metadata": {},
"assigned_rider": UserObjectType,
"seller": SellerObjectType,
"order": OrderObjectType,
"items": [DeliveryItemObjectType],
"calls": [DeliveryCallObjectType],
"latestAnsweredCall": DeliveryCallObjectType,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"deliveryItems": [DeliveryItemObjectType]
}
DeliverySlotEnum
Description
Confirmed delivery time slot
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"MORNING"
DeliveryStatusEnum
Description
Status of delivery
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
NotificationChannel
Description
Channel through which notification is sent
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PUSH"
NotificationChannelFilterInput
Fields
| Input Field | Description |
|---|---|
eq - NotificationChannel
|
|
ne - NotificationChannel
|
|
in - [NotificationChannel!]
|
|
notIn - [NotificationChannel!]
|
Example
{"eq": "PUSH", "ne": "PUSH", "in": ["PUSH"], "notIn": ["PUSH"]}
NotificationStatus
Description
Status of notification delivery
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
NotificationStatusFilterInput
Fields
| Input Field | Description |
|---|---|
eq - NotificationStatus
|
|
ne - NotificationStatus
|
|
in - [NotificationStatus!]
|
|
notIn - [NotificationStatus!]
|
Example
{"eq": "PENDING", "ne": "PENDING", "in": ["PENDING"], "notIn": ["PENDING"]}
NotificationType
Description
Type of notification
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"INFO"
NotificationTypeFilterInput
Fields
| Input Field | Description |
|---|---|
eq - NotificationType
|
|
ne - NotificationType
|
|
in - [NotificationType!]
|
|
notIn - [NotificationType!]
|
Example
{"eq": "INFO", "ne": "INFO", "in": ["INFO"], "notIn": ["INFO"]}
Sales & Orders
CommissionAttributeType
Description
What attribute is matched to find the commission rule
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"ALL"
CommissionCalculationType
Fields
| Field Name | Description |
|---|---|
product_commission - Float!
|
|
loan_commission - Float!
|
|
cash_commission - Float!
|
|
channel_type - ChannelTypeEnum
|
|
commission_type - CommissionDeterminationType
|
|
is_override - Boolean!
|
|
commission_override_id - String
|
|
commission_rule - CommissionObjectType
|
Example
{
"product_commission": 123.45,
"loan_commission": 123.45,
"cash_commission": 123.45,
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"is_override": false,
"commission_override_id": "abc123",
"commission_rule": CommissionObjectType
}
CommissionDeterminationType
Description
How commission is determined for a channel
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"FLAT"
CommissionFilterInput
Fields
| Input Field | Description |
|---|---|
id - String
|
|
channel_type - ChannelTypeEnum
|
|
commission_type - CommissionDeterminationType
|
|
attribute_type - CommissionAttributeType
|
|
commission_value_type - CommissionValueType
|
|
sku_id - String
|
|
is_active - Boolean
|
Example
{
"id": "abc123",
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"attribute_type": "ALL",
"commission_value_type": "FLAT",
"sku_id": "xyz789",
"is_active": true
}
CommissionObjectType
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
channel_type - ChannelTypeEnum!
|
|
commission_type - CommissionDeterminationType!
|
|
attribute_type - CommissionAttributeType!
|
|
commission_value_type - CommissionValueType!
|
|
sku_id - String
|
|
min_price - Float
|
|
max_price - Float
|
|
product_commission - Float!
|
|
loan_commission - Float!
|
|
cash_commission - Float!
|
|
start_date - DateTime!
|
|
end_date - DateTime
|
|
is_active - Boolean!
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
|
sku - SkuObjectType
|
|
overrides - [CommissionOverrideObjectType!]
|
Example
{
"id": 4,
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"attribute_type": "ALL",
"commission_value_type": "FLAT",
"sku_id": "xyz789",
"min_price": 123.45,
"max_price": 123.45,
"product_commission": 123.45,
"loan_commission": 987.65,
"cash_commission": 987.65,
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"is_active": true,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sku": SkuObjectType,
"overrides": [CommissionOverrideObjectType]
}
CommissionOverrideFilterInput
CommissionOverrideObjectType
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
agent_profile_id - String!
|
|
commission_rule_id - String!
|
|
product_commission - Float
|
|
loan_commission - Float
|
|
cash_commission - Float
|
|
commission_value_type - CommissionValueType
|
|
is_active - Boolean!
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
|
agent_profile - AgentProfileObjectType
|
|
commission_rule - CommissionObjectType
|
Example
{
"id": "4",
"agent_profile_id": "xyz789",
"commission_rule_id": "abc123",
"product_commission": 987.65,
"loan_commission": 987.65,
"cash_commission": 123.45,
"commission_value_type": "FLAT",
"is_active": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"agent_profile": AgentProfileObjectType,
"commission_rule": CommissionObjectType
}
CommissionSnapshotType
Example
{
"product_commission": 987.65,
"loan_commission": 123.45,
"cash_commission": 123.45,
"channel_type": "abc123",
"commission_type": "abc123",
"commission_rule_id": "xyz789",
"commission_override_id": "abc123",
"is_override": true
}
CommissionValueType
Description
Whether commission amounts are flat values or percentages of cash price
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"FLAT"
OrderFilterInput
Fields
| Input Field | Description |
|---|---|
order_id - ID
|
|
customer_id - ID
|
|
order_status - OrderStatusEnum
|
|
order_status_any - [OrderStatusEnum!]
|
|
payment_status - SalePaymentStatusEnum
|
|
currency - String
|
|
sub_total - Float
|
|
total_discount - Float
|
|
delivery_fee - Float
|
|
service_fee - Float
|
|
tax_amount - Float
|
|
total_amount - Float
|
|
application_id - String
|
|
sale_agent_id - String
|
|
submitting_agent_id - String
|
|
manual_override - Boolean
|
|
order_date - DateTime
|
|
order_date_from - DateTime
|
|
order_date_to - DateTime
|
|
delivery_status_any - [DeliveryStatusEnum!]
|
|
application_channel_any - [ApplicationChannelEnum!]
|
|
delivery_location_type_any - [String!]
|
|
delivery_or_collection_location_any - [String!]
|
|
preferred_delivery_date_from - DateTime
|
|
preferred_delivery_date_to - DateTime
|
|
confirmed_delivery_date_from - DateTime
|
|
confirmed_delivery_date_to - DateTime
|
|
effective_delivery_date_from - DateTime
|
|
effective_delivery_date_to - DateTime
|
|
customer_phone_contains - String
|
|
customer_official_id_contains - String
|
|
metadata - JSON
|
Example
{
"order_id": 4,
"customer_id": 4,
"order_status": "PENDING",
"order_status_any": ["PENDING"],
"payment_status": "UNPAID",
"currency": "xyz789",
"sub_total": 987.65,
"total_discount": 123.45,
"delivery_fee": 123.45,
"service_fee": 123.45,
"tax_amount": 987.65,
"total_amount": 987.65,
"application_id": "xyz789",
"sale_agent_id": "xyz789",
"submitting_agent_id": "xyz789",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"order_date_from": "2007-12-03T10:15:30Z",
"order_date_to": "2007-12-03T10:15:30Z",
"delivery_status_any": ["PENDING"],
"application_channel_any": ["SALES_APP"],
"delivery_location_type_any": ["abc123"],
"delivery_or_collection_location_any": [
"abc123"
],
"preferred_delivery_date_from": "2007-12-03T10:15:30Z",
"preferred_delivery_date_to": "2007-12-03T10:15:30Z",
"confirmed_delivery_date_from": "2007-12-03T10:15:30Z",
"confirmed_delivery_date_to": "2007-12-03T10:15:30Z",
"effective_delivery_date_from": "2007-12-03T10:15:30Z",
"effective_delivery_date_to": "2007-12-03T10:15:30Z",
"customer_phone_contains": "abc123",
"customer_official_id_contains": "abc123",
"metadata": {}
}
OrderGeo
OrderItemFilterInput
Example
{
"order_item_id": "4",
"order_id": "4",
"seller_id": 4,
"item_type": "PRODUCT",
"catalog_id": "4",
"quantity": 987.65,
"unit_price": 123.45,
"discount_amount": 987.65,
"subtotal": 123.45,
"purchase_type": "CASH",
"status": "abc123",
"metadata": {}
}
OrderItemObjectType
Fields
| Field Name | Description |
|---|---|
order_item_id - ID!
|
|
order_id - ID!
|
|
seller_id - ID!
|
|
item_type - OrderItemTypeEnum!
|
|
catalog_id - ID
|
|
quantity - Float!
|
|
unit_price - Float!
|
|
discount_amount - Float!
|
|
adjustments - JSON
|
|
subtotal - Float!
|
|
purchase_type - PurchaseTypeEnum!
|
|
status - String!
|
|
metadata - JSON
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
|
sellerCatalog - SellerCatalogObjectType
|
|
order - OrderObjectType!
|
|
delivery_items - [DeliveryItemObjectType!]
|
|
inventory_allocations - [InventoryAllocationObjectType!]
|
|
inventory_allocation - InventoryAllocationObjectType
|
Example
{
"order_item_id": 4,
"order_id": 4,
"seller_id": 4,
"item_type": "PRODUCT",
"catalog_id": 4,
"quantity": 123.45,
"unit_price": 123.45,
"discount_amount": 987.65,
"adjustments": {},
"subtotal": 987.65,
"purchase_type": "CASH",
"status": "abc123",
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"sellerCatalog": SellerCatalogObjectType,
"order": OrderObjectType,
"delivery_items": [DeliveryItemObjectType],
"inventory_allocations": [
InventoryAllocationObjectType
],
"inventory_allocation": InventoryAllocationObjectType
}
OrderItemTypeEnum
Description
Type of order item
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"PRODUCT"
OrderObjectType
Fields
| Field Name | Description |
|---|---|
order_id - ID!
|
|
customer_id - ID!
|
|
order_status - OrderStatusEnum!
|
|
payment_status - SalePaymentStatusEnum!
|
|
shipping_address - ShippingAddress
|
|
currency - String
|
|
sub_total - Float!
|
|
total_discount - Float!
|
|
delivery_fee - Float!
|
|
service_fee - Float!
|
|
tax_amount - Float!
|
|
total_amount - Float!
|
|
application_id - String
|
|
sale_agent_id - String
|
|
submitting_agent_id - String
|
|
manual_override - Boolean!
|
|
order_date - DateTime!
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
|
metadata - JSON
|
|
customer - RawCustomersDto
|
|
application - ApplicationEntityGraphQL
|
|
orderItems - [OrderItemObjectType!]
|
|
deliveries - [DeliveryObjectType!]
|
|
sales - [SalesObjectType!]
|
|
deliveryCalls - [DeliveryCallObjectType!]
|
Example
{
"order_id": "4",
"customer_id": "4",
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddress,
"currency": "abc123",
"sub_total": 123.45,
"total_discount": 123.45,
"delivery_fee": 123.45,
"service_fee": 987.65,
"tax_amount": 987.65,
"total_amount": 987.65,
"application_id": "abc123",
"sale_agent_id": "abc123",
"submitting_agent_id": "xyz789",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"application": ApplicationEntityGraphQL,
"orderItems": [OrderItemObjectType],
"deliveries": [DeliveryObjectType],
"sales": [SalesObjectType],
"deliveryCalls": [DeliveryCallObjectType]
}
OrderStatusEnum
Description
Status of the order
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
SaleCorrectionResultType
Example
{
"sale_id": "abc123",
"customer_id": "abc123",
"excess": 123.45,
"reversed_allocation_ids": ["xyz789"],
"wallet_credited": 123.45,
"reallocation_adjustment_id": "xyz789",
"new_payment_status": "xyz789"
}
SaleLifecycleStatusEnum
Description
Lifecycle status of the sale (active or type of return)
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ACTIVE"
SalePaymentStatusEnum
Description
Payment status of the sale
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"UNPAID"
SaleReportingType
Example
{
"loan_id": "abc123",
"business_model": "xyz789",
"is_3p_sale": "xyz789",
"partner_name": "abc123",
"credit_check_done": "abc123",
"cash_price": 987.65,
"loan_price": 123.45,
"loan_period": 987.65
}
SalesFilterInput
Fields
| Input Field | Description |
|---|---|
sale_id - ID
|
|
sale_date - DateTime
|
|
order_id - ID
|
|
customer_id - ID
|
|
sale_agent_id - ID
|
|
submitting_agent_id - ID
|
|
sfm_id - ID
|
|
price_plan_id - ID
|
|
inventory_id - ID
|
|
payment_type - SalesPaymentTypeEnum
|
|
payment_status - SalePaymentStatusEnum
|
|
normal_high_deposit - NormalHighDepositEnum
|
|
final_sale_price - Float
|
|
invoice_number - String
|
|
status - SaleLifecycleStatusEnum
|
|
return_date - DateTime
|
|
hasInventory - Boolean
|
|
order_filters - OrderFilterInput
|
Example
{
"sale_id": "4",
"sale_date": "2007-12-03T10:15:30Z",
"order_id": "4",
"customer_id": 4,
"sale_agent_id": "4",
"submitting_agent_id": "4",
"sfm_id": 4,
"price_plan_id": 4,
"inventory_id": 4,
"payment_type": "REPAIR",
"payment_status": "UNPAID",
"normal_high_deposit": "NORMAL",
"final_sale_price": 123.45,
"invoice_number": "abc123",
"status": "ACTIVE",
"return_date": "2007-12-03T10:15:30Z",
"hasInventory": true,
"order_filters": OrderFilterInput
}
SalesObjectType
Fields
| Field Name | Description |
|---|---|
sale_id - ID!
|
|
sale_date - DateTime
|
|
order_id - ID
|
|
customer_id - ID
|
|
sale_agent_id - ID
|
|
submitting_agent_id - ID
|
|
sfm_id - ID
|
|
price_plan_id - ID
|
|
pricePlan - PricePlanObjectType
|
|
inventory_id - ID
|
|
inventory - InventoryObjectType
|
|
payment_type - SalesPaymentTypeEnum
|
|
payment_status - SalePaymentStatusEnum
|
|
normal_high_deposit - NormalHighDepositEnum
|
|
final_sale_price - Float
|
|
upfront_payment - Float
|
|
gross_loan_amount - Float
|
|
marketplace_fee - Float
|
|
seller_payout - Float
|
|
invoice_number - String
|
|
status - SaleLifecycleStatusEnum!
|
|
return_date - DateTime
|
|
created_at - DateTime!
|
|
metadata - JSON
|
|
customer - RawCustomersDto
|
|
order - OrderObjectType
|
|
loan_contract - LoanContractDto
|
|
commission - CommissionSnapshotType
|
|
cash_price - Float
|
|
reporting - SaleReportingType
|
Example
{
"sale_id": "4",
"sale_date": "2007-12-03T10:15:30Z",
"order_id": "4",
"customer_id": 4,
"sale_agent_id": "4",
"submitting_agent_id": 4,
"sfm_id": 4,
"price_plan_id": "4",
"pricePlan": PricePlanObjectType,
"inventory_id": 4,
"inventory": InventoryObjectType,
"payment_type": "REPAIR",
"payment_status": "UNPAID",
"normal_high_deposit": "NORMAL",
"final_sale_price": 987.65,
"upfront_payment": 987.65,
"gross_loan_amount": 987.65,
"marketplace_fee": 987.65,
"seller_payout": 123.45,
"invoice_number": "abc123",
"status": "ACTIVE",
"return_date": "2007-12-03T10:15:30Z",
"created_at": "2007-12-03T10:15:30Z",
"metadata": {},
"customer": RawCustomersDto,
"order": OrderObjectType,
"loan_contract": LoanContractDto,
"commission": CommissionSnapshotType,
"cash_price": 123.45,
"reporting": SaleReportingType
}
SalesPaymentTypeEnum
Description
Payment type of the sale
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"REPAIR"
SalesProcessingJobStatusGraphQL
Fields
| Field Name | Description |
|---|---|
status - SalesProcessingStatusEnum
|
Current status of the async processing job |
error - String
|
Error message if the job failed or needs review |
conflicting_order_ids - [String!]
|
Order IDs that caused a conflict when status is needs_review |
job_id - String
|
BullMQ job ID |
started_at - DateTime
|
Timestamp when the worker picked up the job |
completed_at - DateTime
|
Timestamp when the job reached a terminal state |
Example
{
"status": "IDLE",
"error": "xyz789",
"conflicting_order_ids": ["xyz789"],
"job_id": "xyz789",
"started_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z"
}
SalesProcessingStatusEnum
Description
Status of an async sales processing job (order or sale creation)
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"IDLE"
Price Plans
EarlyPayoffCalculationType
Fields
| Field Name | Description |
|---|---|
total_loan_amount - Float!
|
|
deposit_amount - Float!
|
|
outstanding_loan - Float!
|
|
discount_percent - Float!
|
|
discount_amount - Float!
|
|
outstanding_discount_applied - Float!
|
|
total_customer_pays - Float!
|
|
accurate_total_customer_pays - Float!
|
|
monthly_instalment_amount - Float!
|
|
weekly_instalment_amount - Float!
|
|
daily_instalment_amount - Float!
|
|
duration_months - Int!
|
|
payment_frequency - String!
|
|
total_loan_amount_high - Float
|
|
discount_amount_high - Float
|
|
total_customer_pays_high - Float
|
|
outstanding_loan_high - Float
|
|
monthly_instalment_amount_high - Float
|
|
weekly_instalment_amount_high - Float
|
|
daily_instalment_amount_high - Float
|
Example
{
"total_loan_amount": 987.65,
"deposit_amount": 123.45,
"outstanding_loan": 987.65,
"discount_percent": 123.45,
"discount_amount": 123.45,
"outstanding_discount_applied": 987.65,
"total_customer_pays": 123.45,
"accurate_total_customer_pays": 987.65,
"monthly_instalment_amount": 987.65,
"weekly_instalment_amount": 123.45,
"daily_instalment_amount": 987.65,
"duration_months": 123,
"payment_frequency": "abc123",
"total_loan_amount_high": 123.45,
"discount_amount_high": 987.65,
"total_customer_pays_high": 987.65,
"outstanding_loan_high": 123.45,
"monthly_instalment_amount_high": 987.65,
"weekly_instalment_amount_high": 987.65,
"daily_instalment_amount_high": 123.45
}
EarlyPayoffDiscountInput
EarlyPayoffDiscountObjectType
EarlyPayoffDiscountType
PricePlanFilterInput
Fields
| Input Field | Description |
|---|---|
id - String
|
|
tier_id - String
|
|
code - String
|
|
name - String
|
|
min_device_value - Float
|
|
max_device_value - Float
|
|
deposit_percent - Float
|
|
subsequent_loan_discount_percent - Float
|
|
deposit_percent_high - Float
|
|
loan_multiplier - Float
|
|
loan_multiplier_high - Float
|
|
mocare_percent - Float
|
|
duration_months - Int
|
|
duration_months_high - Int
|
|
payment_frequency - PaymentFrequencyEnum
|
|
effective_from - String
|
|
effective_to - String
|
|
status - PricePlanStatusEnum
|
|
is_private - Boolean
|
|
metadata - JSON
|
Example
{
"id": "xyz789",
"tier_id": "xyz789",
"code": "abc123",
"name": "xyz789",
"min_device_value": 987.65,
"max_device_value": 123.45,
"deposit_percent": 987.65,
"subsequent_loan_discount_percent": 123.45,
"deposit_percent_high": 123.45,
"loan_multiplier": 123.45,
"loan_multiplier_high": 987.65,
"mocare_percent": 987.65,
"duration_months": 123,
"duration_months_high": 987,
"payment_frequency": "DAILY",
"effective_from": "xyz789",
"effective_to": "abc123",
"status": "ACTIVE",
"is_private": false,
"metadata": {}
}
PricePlanObjectType
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
tier_id - String
|
|
parent_plan_id - String
|
|
code - String!
|
|
name - String!
|
|
min_device_value - Float!
|
|
max_device_value - Float
|
|
deposit_percent - Float!
|
|
deposit_percent_high - Float
|
|
subsequent_loan_discount_percent - Float!
|
|
loan_multiplier - Float!
|
|
loan_multiplier_high - Float
|
|
mocare_percent - Float!
|
|
duration_months - Int!
|
|
duration_months_high - Int
|
|
payment_frequency - PaymentFrequencyEnum!
|
|
effective_from - DateTime
|
|
effective_to - DateTime
|
|
early_payoff_discounts - [EarlyPayoffDiscountObjectType!]!
|
|
status - PricePlanStatusEnum!
|
|
is_private - Boolean!
|
|
version - Int!
|
|
metadata - JSON
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
|
tier - SellerTierObjectType
|
|
versions - [PricePlanObjectType!]
|
Example
{
"id": 4,
"tier_id": "xyz789",
"parent_plan_id": "xyz789",
"code": "xyz789",
"name": "abc123",
"min_device_value": 987.65,
"max_device_value": 987.65,
"deposit_percent": 123.45,
"deposit_percent_high": 123.45,
"subsequent_loan_discount_percent": 123.45,
"loan_multiplier": 987.65,
"loan_multiplier_high": 987.65,
"mocare_percent": 123.45,
"duration_months": 987,
"duration_months_high": 123,
"payment_frequency": "DAILY",
"effective_from": "2007-12-03T10:15:30Z",
"effective_to": "2007-12-03T10:15:30Z",
"early_payoff_discounts": [
EarlyPayoffDiscountObjectType
],
"status": "ACTIVE",
"is_private": false,
"version": 123,
"metadata": {},
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"tier": SellerTierObjectType,
"versions": [PricePlanObjectType]
}
PricePlanStatusEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"ACTIVE"
PricingCalculationType
Fields
| Field Name | Description |
|---|---|
cash_price - Float!
|
|
deposit_amount - Float!
|
|
deposit_amount_high - Float
|
|
subsequent_loan_discount_percent - Float!
|
|
subsequent_loan_initial_pay - Float!
|
|
subsequent_loan_total_customer_pays - Float!
|
|
loan_principal - Float!
|
|
loan_principal_high - Float
|
|
total_loan_amount - Float!
|
|
total_loan_amount_high - Float
|
|
outstanding_loan - Float!
|
|
outstanding_loan_high - Float
|
|
mocare_value - Float!
|
|
total_customer_pays - Float!
|
|
total_customer_pays_high - Float
|
|
accurate_total_customer_pays - Float!
|
|
accurate_total_customer_pays_high - Float
|
|
instalment_amount - Float!
|
|
instalment_amount_high - Float
|
|
daily_instalment_amount - Float!
|
|
daily_instalment_amount_high - Float
|
|
weekly_instalment_amount - Float!
|
|
weekly_instalment_amount_high - Float
|
|
monthly_instalment_amount - Float!
|
|
monthly_instalment_amount_high - Float
|
|
weekly_installment_count_high - Int
|
|
duration_months - Int!
|
|
duration_months_high - Int
|
|
payment_frequency - String!
|
|
plan_code - String!
|
|
plan_id - ID!
|
|
plan_name - String!
|
|
early_payoff_discounts - [EarlyPayoffDiscountType!]
|
Example
{
"cash_price": 987.65,
"deposit_amount": 123.45,
"deposit_amount_high": 987.65,
"subsequent_loan_discount_percent": 123.45,
"subsequent_loan_initial_pay": 987.65,
"subsequent_loan_total_customer_pays": 123.45,
"loan_principal": 123.45,
"loan_principal_high": 123.45,
"total_loan_amount": 123.45,
"total_loan_amount_high": 123.45,
"outstanding_loan": 123.45,
"outstanding_loan_high": 123.45,
"mocare_value": 987.65,
"total_customer_pays": 987.65,
"total_customer_pays_high": 987.65,
"accurate_total_customer_pays": 123.45,
"accurate_total_customer_pays_high": 123.45,
"instalment_amount": 123.45,
"instalment_amount_high": 987.65,
"daily_instalment_amount": 987.65,
"daily_instalment_amount_high": 987.65,
"weekly_instalment_amount": 123.45,
"weekly_instalment_amount_high": 987.65,
"monthly_instalment_amount": 123.45,
"monthly_instalment_amount_high": 123.45,
"weekly_installment_count_high": 987,
"duration_months": 123,
"duration_months_high": 987,
"payment_frequency": "xyz789",
"plan_code": "xyz789",
"plan_id": 4,
"plan_name": "xyz789",
"early_payoff_discounts": [EarlyPayoffDiscountType]
}
Export
DataExportDateRangeInput
DataExportDomain
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"INVENTORY"
DataExportFileFormat
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"XLSX"
DataExportFilterInput
Fields
| Input Field | Description |
|---|---|
status - DataExportStatus
|
|
limit - Int
|
|
mineOnly - Boolean
|
Example
{"status": "PENDING", "limit": 987, "mineOnly": true}
DataExportNamespace
Fields
| Field Name | Description |
|---|---|
scheduleDataExport - DataExportType!
|
Schedule a background data export job |
Arguments
|
|
estimateRowCount - Int!
|
Estimate row count for export filters before scheduling |
Arguments
|
|
exportColumnCatalog - ExportDomainColumnCatalogType!
|
Column metadata and presets for a domain export |
Arguments
|
|
dataExport - DataExportType
|
Get a single export job by ID |
Arguments
|
|
dataExports - [DataExportType!]!
|
List export jobs for the current user |
Arguments
|
|
Example
{
"scheduleDataExport": DataExportType,
"estimateRowCount": 987,
"exportColumnCatalog": ExportDomainColumnCatalogType,
"dataExport": DataExportType,
"dataExports": [DataExportType]
}
DataExportStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
DataExportType
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
export_name - String!
|
|
domain - DataExportDomain!
|
|
status - DataExportStatus!
|
|
file_format - DataExportFileFormat!
|
|
filters - JSON
|
|
date_range - JSON
|
|
row_count - Int
|
|
file_key - String
|
|
file_url - String
|
|
error_message - String
|
|
requested_by - String!
|
|
requested_by_email - String
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
Example
{
"id": 4,
"export_name": "xyz789",
"domain": "INVENTORY",
"status": "PENDING",
"file_format": "XLSX",
"filters": {},
"date_range": {},
"row_count": 987,
"file_key": "xyz789",
"file_url": "xyz789",
"error_message": "abc123",
"requested_by": "xyz789",
"requested_by_email": "xyz789",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
ExportColumnMetaType
ExportDomainColumnCatalogType
Fields
| Field Name | Description |
|---|---|
domain - DataExportDomain!
|
|
columns - [ExportColumnMetaType!]!
|
|
presets - [ExportPresetMetaType!]!
|
Example
{
"domain": "INVENTORY",
"columns": [ExportColumnMetaType],
"presets": [ExportPresetMetaType]
}
ExportModuleNamespace
Fields
| Field Name | Description |
|---|---|
dataExport - DataExportNamespace!
|
Example
{"dataExport": DataExportNamespace}
ExportPresetMetaType
Fields
| Field Name | Description |
|---|---|
id - String!
|
|
label - String!
|
|
columnKeys - [String!]!
|
Example
{
"id": "xyz789",
"label": "xyz789",
"columnKeys": ["abc123"]
}
Audit
AuditLogFilterInput
Fields
| Input Field | Description |
|---|---|
audit_log_id - ID
|
|
object_type - String
|
|
object_types - [String!]
|
|
object_id - ID
|
|
action_type - ActionTypeEnum
|
|
action_status - ActionStatusEnum
|
|
auditor_id - ID
|
|
auditor_email - String
|
|
action_requires_approval - Boolean
|
|
action_approval_levels - [String!]
|
|
action_approval_status - ActionApprovalStatusEnum
|
|
session_id - String
|
Example
{
"audit_log_id": 4,
"object_type": "xyz789",
"object_types": ["abc123"],
"object_id": 4,
"action_type": "NOTE",
"action_status": "DRAFT",
"auditor_id": 4,
"auditor_email": "abc123",
"action_requires_approval": true,
"action_approval_levels": ["abc123"],
"action_approval_status": "PENDING",
"session_id": "abc123"
}
AuditLogNamespace
Fields
| Field Name | Description |
|---|---|
auditLog - AuditLogObjectType
|
Get a single audit log by its ID |
Arguments
|
|
auditLogByFilters - AuditLogObjectType
|
Get a single audit log by specific filters |
Arguments
|
|
auditLogCount - Float!
|
Get audit log count for a specific object |
Arguments
|
|
auditLogsCursor - CursorPaginatedAuditLogs!
|
Get paginated audit logs using cursor-based pagination |
Arguments
|
|
auditLogsOffset - OffsetPaginatedAuditLogs!
|
Get paginated audit logs using offset-based pagination |
Arguments
|
|
createAuditLog - AuditLogObjectType!
|
Create a new audit log entry |
Arguments
|
|
createNote - AuditLogObjectType!
|
Create a new audit note |
Arguments
|
|
updateAuditLog - AuditLogObjectType!
|
Update an existing audit log entry |
Arguments
|
|
updateAuditLogs - Float!
|
Update multiple audit logs matching the filters |
Arguments
|
|
deleteAuditLog - Boolean!
|
Delete a single audit log by its ID |
Arguments
|
|
deleteAuditLogs - Float!
|
Delete multiple audit logs matching the filters |
Arguments
|
|
Example
{
"auditLog": AuditLogObjectType,
"auditLogByFilters": AuditLogObjectType,
"auditLogCount": 987.65,
"auditLogsCursor": CursorPaginatedAuditLogs,
"auditLogsOffset": OffsetPaginatedAuditLogs,
"createAuditLog": AuditLogObjectType,
"createNote": AuditLogObjectType,
"updateAuditLog": AuditLogObjectType,
"updateAuditLogs": 987.65,
"deleteAuditLog": true,
"deleteAuditLogs": 987.65
}
AuditLogObjectType
Fields
| Field Name | Description |
|---|---|
audit_log_id - ID!
|
|
object_type - String!
|
|
object_id - ID!
|
|
action_type - ActionTypeEnum!
|
|
action_description - String!
|
|
action_status - ActionStatusEnum!
|
|
auditor_id - ID
|
|
auditor_username - String
|
|
auditor_email - String
|
|
actor_metadata - JSON
|
|
object_old_value - JSON
|
|
object_new_value - JSON
|
|
field_changes - JSON
|
|
action_requires_approval - Boolean!
|
|
action_approval_levels - [String!]
|
|
action_requested_by_id - ID
|
|
action_requested_by_username - String
|
|
action_approver_id - ID
|
|
action_approver_username - String
|
|
action_approved_at - DateTime
|
|
action_approval_status - ActionApprovalStatusEnum!
|
|
action_approval_notes - String
|
|
ip_address - String
|
|
user_agent - String
|
|
device_info - JSON
|
|
session_id - String
|
|
audited_at - DateTime!
|
|
visibility_level - VisibilityLevelEnum
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
Example
{
"audit_log_id": 4,
"object_type": "abc123",
"object_id": "4",
"action_type": "NOTE",
"action_description": "abc123",
"action_status": "DRAFT",
"auditor_id": 4,
"auditor_username": "xyz789",
"auditor_email": "xyz789",
"actor_metadata": {},
"object_old_value": {},
"object_new_value": {},
"field_changes": {},
"action_requires_approval": true,
"action_approval_levels": ["abc123"],
"action_requested_by_id": 4,
"action_requested_by_username": "abc123",
"action_approver_id": "4",
"action_approver_username": "abc123",
"action_approved_at": "2007-12-03T10:15:30Z",
"action_approval_status": "PENDING",
"action_approval_notes": "xyz789",
"ip_address": "abc123",
"user_agent": "abc123",
"device_info": {},
"session_id": "xyz789",
"audited_at": "2007-12-03T10:15:30Z",
"visibility_level": "PUBLIC",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
AuditModuleNamespace
Fields
| Field Name | Description |
|---|---|
auditLog - AuditLogNamespace!
|
Example
{"auditLog": AuditLogNamespace}
After-Sale
RefundFilterInput
Description
Filter input for querying refunds
Fields
| Input Field | Description |
|---|---|
status - RefundStatus
|
Filter by status |
customer_id - String
|
Filter by customer ID |
sale_id - String
|
Filter by sale ID |
returns_request_id - String
|
Filter by returns request ID |
refund_workflow_type - RefundWorkflowType
|
Filter by workflow type |
refund_method - RefundMethod
|
Filter by refund method |
submitted_by - String
|
Filter by submitted_by user ID |
approved_by - String
|
Filter by approved_by user ID |
Example
{
"status": "PENDING",
"customer_id": "abc123",
"sale_id": "xyz789",
"returns_request_id": "xyz789",
"refund_workflow_type": "RETURN",
"refund_method": "MPESA",
"submitted_by": "xyz789",
"approved_by": "abc123"
}
RefundGraphQL
Fields
| Field Name | Description |
|---|---|
refund_id - ID!
|
|
customer_id - String!
|
|
sale_id - String!
|
|
returns_request_id - String!
|
|
order_id - String
|
|
loan_contract_id - String
|
|
source_payment_id - String
|
|
adjustment_id - String
|
|
refund_workflow_type - RefundWorkflowType
|
|
refund_amount - Float!
|
|
status - RefundStatus!
|
|
refund_method - RefundMethod
|
|
transaction_reference - String
|
|
submitted_by - String
|
|
submitted_by_name - String
|
|
actor_id - String
|
|
approved_by - String
|
|
approved_by_name - String
|
|
customer_name - String
|
|
customer_phone - String
|
|
customer_official_id - String
|
|
approved_at - DateTime
|
|
processed_at - DateTime
|
|
completed_at - DateTime
|
|
notes - String
|
|
rejection_reason - String
|
|
returns_request_type - String
|
|
created_at - DateTime!
|
|
updated_at - DateTime!
|
Example
{
"refund_id": "4",
"customer_id": "xyz789",
"sale_id": "xyz789",
"returns_request_id": "xyz789",
"order_id": "xyz789",
"loan_contract_id": "xyz789",
"source_payment_id": "xyz789",
"adjustment_id": "abc123",
"refund_workflow_type": "RETURN",
"refund_amount": 987.65,
"status": "PENDING",
"refund_method": "MPESA",
"transaction_reference": "abc123",
"submitted_by": "abc123",
"submitted_by_name": "xyz789",
"actor_id": "abc123",
"approved_by": "abc123",
"approved_by_name": "xyz789",
"customer_name": "abc123",
"customer_phone": "xyz789",
"customer_official_id": "abc123",
"approved_at": "2007-12-03T10:15:30Z",
"processed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"notes": "xyz789",
"rejection_reason": "abc123",
"returns_request_type": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
RefundMethod
Description
Method used to process the refund
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"MPESA"
RefundStatus
Description
Status of a refund request
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
RefundWorkflowType
Description
Returns workflow that originated the refund
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"RETURN"
RepossessionDetailsType
Fields
| Field Name | Description |
|---|---|
repossession_date - DateTime
|
|
repossession_method - CollectionMethod
|
|
repossession_notes - String
|
Example
{
"repossession_date": "2007-12-03T10:15:30Z",
"repossession_method": "FIELD_AGENT",
"repossession_notes": "xyz789"
}
ReturnPolicy
Description
Whether the return is within or outside policy
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"WITHIN_POLICY"
ReturnReason
Description
Reason for a device return
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"FUNCTIONAL_ISSUES"
ReturnsAction
Description
Action to perform on a returns request
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"SUBMIT"
ReturnsActionPayloadInput
Description
Payload for action-specific data
Fields
| Input Field | Description |
|---|---|
consent_stage - ConsentStage
|
Consent stage |
consent_type - ConsentType
|
Consent type |
consent_declined - Boolean
|
Whether consent was declined |
decisioner_id - String
|
Decisioner user ID |
decisioner_notes - String
|
Decisioner notes |
customer_notes - String
|
Customer notes |
confirmed_price_plan - String
|
Confirmed price plan |
confirmed_target_device_model - String
|
Confirmed target device model |
confirmed_cash_price - Float
|
Confirmed cash price |
new_device_deposit - Float
|
Confirmed new device deposit (tier-aware HIGH/NORMAL from device picker) |
confirmed_weekly_instalment_amount - Float
|
Confirmed weekly instalment (tier-aware HIGH/NORMAL from device picker) |
confirmed_topup_amount - Float
|
Confirmed top-up amount |
confirmed_refund_amount - Float
|
Confirmed refund amount |
refund_eligible - Boolean
|
Credit decision: customer refund eligible at loan closure |
expected_refund_amount - Float
|
Gross refund before repair deduction |
qc_fail_refund_override_reason - String
|
Override reason when approving refund on QC-fail device grade |
required_arrears_payment_amount - Float
|
KES customer must pay toward arrears (APPROVE_ARREARS_CLEARANCE on PENDING_ARREARS_WAIVER). CONFIRM_ARREARS_PAYMENT validates ledger reduction. |
new_loan_term_months - Int
|
New loan term in months |
operations_user_id - String
|
Operations user ID |
operations_notes - String
|
Operations notes |
repair_cost - Float
|
Repair cost |
device_condition - DeviceConditionGrade
|
Device condition grade |
locking_system_condition - LockingSystemCondition
|
Locking system condition from ops device assessment |
device_unlock_password - String
|
Device unlock password noted during ops inspection |
new_device_id - String
|
New device ID (IMEI/serial) |
replace_existing - Boolean
|
When a new device is already assigned, set true to replace it (swap / upgrade / downgrade). |
repossession_date - DateTime
|
Repossession date |
repossession_method - CollectionMethod
|
Repossession method |
repossession_notes - String
|
Repossession notes |
otp - String
|
OTP for intent consent verification |
bypass_otp - Boolean
|
Bypass OTP verification (requires bypass_reason) |
bypass_reason - String
|
Reason for bypassing OTP verification |
bypass_arrears_gate - Boolean
|
Skip partial-arrears ledger gate on advance actions (requires bypass_arrears_reason) |
bypass_arrears_reason - String
|
Audited reason for overriding the arrears payment gate |
cancellation_reason - String
|
Reason for cancellation |
notes - String
|
General notes for the action |
fulfillment_mode - String
|
Fulfillment for new order after upgrade/downgrade: home_delivery (default) or shop_pickup |
mpesa_reference - String
|
M-Pesa or payment reference for CX verification (metadata) |
bypass_mpesa_verification - Boolean
|
Skip live M-Pesa payment lookup (requires mpesa_bypass_reason). Use when the payments API is unavailable. |
mpesa_bypass_reason - String
|
Audited reason for overriding M-Pesa verification (e.g. M-Pesa / payments API downtime) |
bypass_repair_payment - Boolean
|
Skip swap repair M-Pesa verification on RECORD_SWAP_REPAIR_MPESA_CLEARANCE (requires bypass_reason). |
upgrade_policy_mode - String
|
Policy bucket for top-up messaging (e.g. two_day_window, beyond_two_day) |
customer_age_weeks_at_decision - Int
|
Customer age in weeks at decision (for beyond-2-day formula hints) |
force_detach - Boolean
|
Skip inventory stock update on DETACH_DEVICE (clears Mongo assignment only). Admin override. |
Example
{
"consent_stage": "INTENT",
"consent_type": "OTP",
"consent_declined": false,
"decisioner_id": "xyz789",
"decisioner_notes": "xyz789",
"customer_notes": "xyz789",
"confirmed_price_plan": "xyz789",
"confirmed_target_device_model": "xyz789",
"confirmed_cash_price": 123.45,
"new_device_deposit": 987.65,
"confirmed_weekly_instalment_amount": 123.45,
"confirmed_topup_amount": 123.45,
"confirmed_refund_amount": 123.45,
"refund_eligible": false,
"expected_refund_amount": 123.45,
"qc_fail_refund_override_reason": "abc123",
"required_arrears_payment_amount": 123.45,
"new_loan_term_months": 987,
"operations_user_id": "xyz789",
"operations_notes": "xyz789",
"repair_cost": 123.45,
"device_condition": "GRADE_A",
"locking_system_condition": "OK",
"device_unlock_password": "abc123",
"new_device_id": "xyz789",
"replace_existing": false,
"repossession_date": "2007-12-03T10:15:30Z",
"repossession_method": "FIELD_AGENT",
"repossession_notes": "xyz789",
"otp": "xyz789",
"bypass_otp": true,
"bypass_reason": "abc123",
"bypass_arrears_gate": true,
"bypass_arrears_reason": "xyz789",
"cancellation_reason": "abc123",
"notes": "abc123",
"fulfillment_mode": "abc123",
"mpesa_reference": "xyz789",
"bypass_mpesa_verification": true,
"mpesa_bypass_reason": "abc123",
"bypass_repair_payment": false,
"upgrade_policy_mode": "xyz789",
"customer_age_weeks_at_decision": 123,
"force_detach": false
}
ReturnsDevicePickerCurrentPlanType
Description
Current credit plan snapshot for the sale’s application (same resolution as activeCreditPricePlan).
Fields
| Field Name | Description |
|---|---|
plan_id - ID!
|
|
plan_name - String!
|
|
cash_price - Float!
|
|
deposit_amount - Float!
|
|
weekly_instalment_amount - Float!
|
|
deposit_amount_high - Float
|
High-deposit tier deposit for the current plan quote. |
weekly_instalment_amount_high - Float
|
High-deposit tier weekly instalment for the current plan quote. |
deposit_tier - String
|
Deposit tier on the sale application (e.g. normal, high), from normal_high_deposit or Fate Guide. |
duration_months - Int
|
Loan duration in months for this credit price plan. |
Example
{
"plan_id": "4",
"plan_name": "abc123",
"cash_price": 987.65,
"deposit_amount": 987.65,
"weekly_instalment_amount": 987.65,
"deposit_amount_high": 123.45,
"weekly_instalment_amount_high": 987.65,
"deposit_tier": "xyz789",
"duration_months": 987
}
ReturnsDevicePickerDeviceRowType
Fields
| Field Name | Description |
|---|---|
seller_catalog_id - ID!
|
|
sku_id - ID!
|
|
seller_id - ID!
|
|
device_display_name - String!
|
|
retail_price - Float!
|
|
available_stock - Int!
|
|
platform_owner - Boolean
|
True when seller catalog row belongs to platform owner (1P). |
deposit_amount - Float
|
|
weekly_instalment_amount - Float
|
|
deposit_amount_high - Float
|
High-deposit tier deposit for the quoted plan. |
weekly_instalment_amount_high - Float
|
High-deposit tier weekly instalment for the quoted plan. |
total_loan_amount - Float
|
Total loan amount for the quoted price plan (cash × multiplier). Used for upgrade/downgrade refund threshold. |
weekly_installment_count - Int
|
Full-term weekly instalment count for schedule preview. |
duration_months - Int
|
Loan duration in months for the quoted plan. |
top_up_or_refund_delta - Float
|
Difference vs current_plan.deposit_amount for the requested price plan (positive ≈ top-up, negative ≈ refund). |
top_up_or_refund_delta_high - Float
|
High-deposit delta vs current_plan.deposit_amount_high (falls back to standard deposit). |
difference_outcome - String
|
Difference outcome for standard tier (to_pay, prepayment, refund). |
difference_outcome_high - String
|
Difference outcome for high tier (to_pay, prepayment, refund). |
difference_display_amount - Float
|
Display amount for standard-tier outcome. For refund, this is refund amount; for prepayment, this is overpayment amount; otherwise top-up amount. |
difference_display_amount_high - Float
|
Display amount for high-tier outcome. For refund, this is refund amount; for prepayment, this is overpayment amount; otherwise top-up amount. |
difference_unavailable_reason - String
|
Reason code when backend cannot compute outcome (for example missing ledger inputs). |
quote_error - String
|
Example
{
"seller_catalog_id": "4",
"sku_id": "4",
"seller_id": "4",
"device_display_name": "xyz789",
"retail_price": 123.45,
"available_stock": 123,
"platform_owner": true,
"deposit_amount": 987.65,
"weekly_instalment_amount": 987.65,
"deposit_amount_high": 987.65,
"weekly_instalment_amount_high": 987.65,
"total_loan_amount": 123.45,
"weekly_installment_count": 123,
"duration_months": 987,
"top_up_or_refund_delta": 123.45,
"top_up_or_refund_delta_high": 123.45,
"difference_outcome": "xyz789",
"difference_outcome_high": "abc123",
"difference_display_amount": 123.45,
"difference_display_amount_high": 987.65,
"difference_unavailable_reason": "xyz789",
"quote_error": "abc123"
}
ReturnsDevicePickerFateGuideCeilingsType
Description
Fate Guide cash ceilings for returns device picker (normal vs high deposit).
Fields
| Field Name | Description |
|---|---|
max_cash_price - Float
|
Max cash price at standard deposit. |
max_cash_price_high - Float
|
Max cash price at high deposit (when Fate Guide provides it). |
max_cash_price_mosaver - Float
|
Max cash price on MoSaver terms (opt-in ceiling). |
catalog_max_cash_price - Float
|
Ceiling used to filter the device catalog (max_cash_price_high ?? max_cash_price). |
deposit_level - String
|
Fate Guide deposit level constraint (e.g. normal, high). |
Example
{
"max_cash_price": 123.45,
"max_cash_price_high": 123.45,
"max_cash_price_mosaver": 123.45,
"catalog_max_cash_price": 987.65,
"deposit_level": "abc123"
}
ReturnsDevicePickerFatePlanOptionType
ReturnsDevicePickerInput
Fields
| Input Field | Description |
|---|---|
sale_id - ID!
|
|
price_plan_id - String
|
When the Fate Guide lists price plans, must match a plan_id in fate_guide_available_price_plans; otherwise ignored and the active plan is used for quotes. |
seller_id - String
|
|
show_top_products_only - Boolean
|
|
exclude_out_of_stock - Boolean
|
|
page - Int
|
|
limit - Int
|
Seller-catalog page size (max 10). Use name or product_id to search the catalog. Default = 10 |
brand - String
|
|
model - String
|
|
product_id - String
|
|
name - String
|
Example
{
"sale_id": 4,
"price_plan_id": "abc123",
"seller_id": "xyz789",
"show_top_products_only": true,
"exclude_out_of_stock": false,
"page": 987,
"limit": 123,
"brand": "xyz789",
"model": "abc123",
"product_id": "xyz789",
"name": "abc123"
}
ReturnsDevicePickerPayload
Fields
| Field Name | Description |
|---|---|
application_id - ID
|
|
customer_id - ID
|
|
price_restrictions - OnboardingProductFilterType
|
|
current_plan - ReturnsDevicePickerCurrentPlanType
|
|
devices - [ReturnsDevicePickerDeviceRowType!]!
|
|
fate_guide_available_price_plans - [ReturnsDevicePickerFatePlanOptionType!]!
|
Price plans listed on the latest Fate Guide (available_plans), resolved to names. When the Fate Guide has no entries, this is empty and quotes use the application’s active plan. |
pagination - OnboardingPaginationMetadataType
|
|
fate_guide_id - ID
|
|
fate_guide_ceilings - ReturnsDevicePickerFateGuideCeilingsType
|
Separate normal/high cash ceilings from the latest Fate Guide; null when no guide. |
effective_price_plan_id - ID
|
Price plan id used for per-row quotes: optional price_plan_id when the Fate Guide lists plans and it matches one of them; otherwise the application’s active / stored credit plan. |
unavailable_reason - String
|
When set, device list may be empty; client should fall back to manual SKU entry. |
quotes_use_present_day_pricing - Boolean
|
True when device quotes use present-day ceiling plans rather than the application active credit plan. |
legacy_price_plan_reference - String
|
Original legacy price plan slug stored on the application, when not a UUID. |
Example
{
"application_id": 4,
"customer_id": 4,
"price_restrictions": OnboardingProductFilterType,
"current_plan": ReturnsDevicePickerCurrentPlanType,
"devices": [ReturnsDevicePickerDeviceRowType],
"fate_guide_available_price_plans": [
ReturnsDevicePickerFatePlanOptionType
],
"pagination": OnboardingPaginationMetadataType,
"fate_guide_id": 4,
"fate_guide_ceilings": ReturnsDevicePickerFateGuideCeilingsType,
"effective_price_plan_id": 4,
"unavailable_reason": "abc123",
"quotes_use_present_day_pricing": true,
"legacy_price_plan_reference": "xyz789"
}
ReturnsFilterInput
Description
Filter input for returns queries
Fields
| Input Field | Description |
|---|---|
request_type - ReturnsRequestTypeFilterInput
|
Filter by request type |
status - ReturnsStatusFilterInput
|
Filter by status |
customer_id - StringFilterInput
|
Filter by customer ID |
sale_id - StringFilterInput
|
Filter by sale ID |
ticket_id - StringFilterInput
|
Filter by ticket ID |
submitted_by - StringFilterInput
|
Filter by submitted by |
return_reason - StringFilterInput
|
Filter by return reason |
return_policy - StringFilterInput
|
Filter by return policy |
current_device_id - StringFilterInput
|
Filter by current device inventory id |
sku_id - StringFilterInput
|
Cross-domain filter by inventory sku id |
stock_location - StringFilterInput
|
Cross-domain filter by stock location name |
sales_person_id - StringFilterInput
|
Cross-domain filter by sales person id |
sales_channel - StringFilterInput
|
Cross-domain filter by sales channel |
refund_applicable - BooleanFilterInput
|
Filter by refund applicable |
has_refund_awarded - BooleanFilterInput
|
When eq/ne true: refund_applicable and a positive confirmed or calculated refund amount. When eq/ne false: the inverse (no awarded refund). |
imei - StringFilterInput
|
Filter by old product snapshot IMEI (partial match via regexFilters) |
sku_code - StringFilterInput
|
Filter by old product snapshot SKU code (partial match via regexFilters) |
decisioner_id - StringFilterInput
|
Filter by decisioner who approved (decisioner_details.decisioner_id) |
operations_user_id - StringFilterInput
|
Filter by ops assignee (operations_details.operations_user_id) |
pending_manual_detach - BooleanFilterInput
|
Filter by metadata.pending_manual_detach (devices awaiting OPS detach) |
manual_detach_completed - BooleanFilterInput
|
Filter by completed manual sale-device detach (metadata.manual_detach_audit) |
submitted_at - DateFilterInput
|
Filter by submitted date |
createdAt - DateFilterInput
|
Filter by creation date |
updatedAt - DateFilterInput
|
Filter by last update date |
or - [ReturnsFilterInput!]
|
Logical OR — match documents satisfying any of the given filters |
and - [ReturnsFilterInput!]
|
Logical AND — match documents satisfying all of the given filters |
Example
{
"request_type": ReturnsRequestTypeFilterInput,
"status": ReturnsStatusFilterInput,
"customer_id": StringFilterInput,
"sale_id": StringFilterInput,
"ticket_id": StringFilterInput,
"submitted_by": StringFilterInput,
"return_reason": StringFilterInput,
"return_policy": StringFilterInput,
"current_device_id": StringFilterInput,
"sku_id": StringFilterInput,
"stock_location": StringFilterInput,
"sales_person_id": StringFilterInput,
"sales_channel": StringFilterInput,
"refund_applicable": BooleanFilterInput,
"has_refund_awarded": BooleanFilterInput,
"imei": StringFilterInput,
"sku_code": StringFilterInput,
"decisioner_id": StringFilterInput,
"operations_user_id": StringFilterInput,
"pending_manual_detach": BooleanFilterInput,
"manual_detach_completed": BooleanFilterInput,
"submitted_at": DateFilterInput,
"createdAt": DateFilterInput,
"updatedAt": DateFilterInput,
"or": [ReturnsFilterInput],
"and": [ReturnsFilterInput]
}
ReturnsGraphQL
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
request_type - ReturnsRequestType!
|
|
status - ReturnsStatus!
|
|
customer_id - String!
|
|
sale_id - String!
|
|
ticket_id - String
|
|
current_device_id - String!
|
|
target_device_model - String
|
|
return_reason - ReturnReason
|
|
customer_notes - String
|
|
cxc_notes - String
|
|
submitted_by - String!
|
|
customer - ResolvedCustomerType
|
|
current_device - ResolvedDeviceType
|
|
submitted_by_user - ResolvedUserType
|
|
operations_user - ResolvedUserType
|
|
decisioner_user - ResolvedUserType
|
|
submitted_at - DateTime
|
|
return_policy - ReturnPolicy
|
|
current_device_balance - Float
|
|
amount_paid_to_date - Float
|
|
current_device_deposit - Float
|
|
new_device_deposit - Float
|
|
new_device_price - Float
|
|
device_allocation_details - DeviceAllocationDetailsType
|
|
operations_details - OperationsDetailsType
|
|
decisioner_details - DecisionerDetailsType
|
|
consent_records - [ConsentRecordType!]
|
|
refund_applicable - Boolean!
|
|
repossession_details - RepossessionDetailsType
|
|
status_history - [StatusHistoryEntryType!]
|
|
notes_history - [ReturnsNoteEntryType!]
|
Append-only audit trail of notes submitted on create and actions |
price_plan - String
|
|
lane_owner - String
|
|
superseded_by_request_id - String
|
|
supersedes_request_id - String
|
|
workflow_switch_reason - String
|
|
workflow_switch - WorkflowSwitchType
|
|
reverse_progress - ReverseProgress
|
|
no_stock_at_request - Boolean
|
True when an originating swap had no platform-owner stock at request time |
old_product_snapshot - ProductSnapshotType
|
|
new_product_snapshot - ProductSnapshotType
|
|
createdAt - DateTime!
|
|
updatedAt - DateTime!
|
|
intake_return_type_label - String
|
|
fulfillment_mode - String
|
|
mpesa_reference - String
|
|
upgrade_policy_mode - String
|
|
customer_age_weeks_at_decision - Int
|
|
new_credit_sale_id - ID
|
|
new_credit_sale_activated_at - String
|
|
topup_confirmed_at - String
|
|
swap_repair_mpesa_clearance - JSON
|
|
inventory_sync - JSON
|
|
pending_manual_detach - Boolean
|
|
pending_detach_inventory_id - ID
|
|
manual_detach_detached_at - String
|
|
manual_detach_inventory_id - ID
|
|
linked_application_id - ID
|
Example
{
"_id": 4,
"request_type": "SWAP",
"status": "PENDING",
"customer_id": "xyz789",
"sale_id": "xyz789",
"ticket_id": "abc123",
"current_device_id": "abc123",
"target_device_model": "xyz789",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "abc123",
"cxc_notes": "abc123",
"submitted_by": "xyz789",
"customer": ResolvedCustomerType,
"current_device": ResolvedDeviceType,
"submitted_by_user": ResolvedUserType,
"operations_user": ResolvedUserType,
"decisioner_user": ResolvedUserType,
"submitted_at": "2007-12-03T10:15:30Z",
"return_policy": "WITHIN_POLICY",
"current_device_balance": 123.45,
"amount_paid_to_date": 987.65,
"current_device_deposit": 123.45,
"new_device_deposit": 987.65,
"new_device_price": 987.65,
"device_allocation_details": DeviceAllocationDetailsType,
"operations_details": OperationsDetailsType,
"decisioner_details": DecisionerDetailsType,
"consent_records": [ConsentRecordType],
"refund_applicable": false,
"repossession_details": RepossessionDetailsType,
"status_history": [StatusHistoryEntryType],
"notes_history": [ReturnsNoteEntryType],
"price_plan": "abc123",
"lane_owner": "abc123",
"superseded_by_request_id": "xyz789",
"supersedes_request_id": "xyz789",
"workflow_switch_reason": "xyz789",
"workflow_switch": WorkflowSwitchType,
"reverse_progress": "TO_BE_PICKED_UP",
"no_stock_at_request": false,
"old_product_snapshot": ProductSnapshotType,
"new_product_snapshot": ProductSnapshotType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"intake_return_type_label": "xyz789",
"fulfillment_mode": "xyz789",
"mpesa_reference": "abc123",
"upgrade_policy_mode": "xyz789",
"customer_age_weeks_at_decision": 123,
"new_credit_sale_id": 4,
"new_credit_sale_activated_at": "xyz789",
"topup_confirmed_at": "abc123",
"swap_repair_mpesa_clearance": {},
"inventory_sync": {},
"pending_manual_detach": false,
"pending_detach_inventory_id": "4",
"manual_detach_detached_at": "xyz789",
"manual_detach_inventory_id": "4",
"linked_application_id": 4
}
ReturnsIntakeFinancialPreviewType
Fields
| Field Name | Description |
|---|---|
sale_id - ID!
|
|
has_loan_ledger - Boolean!
|
|
arrears_amount - Float
|
|
balance_due - Float
|
|
amount_paid - Float
|
|
loan_age_days - Int
|
|
days_since_last_payment - Int
|
Days since the last payment (from latest ledger snapshot). |
last_payment_date - DateTime
|
Date of the last payment applied to the loan. |
last_payment_amount - Float
|
Amount of the last payment (resolved from ledger payment_id when present). |
days_past_due - Float
|
|
requires_arrears_escalation - Boolean
|
True when days_past_due >= 14 and arrears remain — intake may escalate to credit |
ledger_id - ID
|
|
contract_id - ID
|
|
credit_expiry_date - DateTime
|
Latest ledger credit expiry (device lock horizon). |
opening_date - DateTime
|
Loan contract opening date. |
upfront_payment - Float
|
Loan contract upfront payment (deposit component). |
Example
{
"sale_id": 4,
"has_loan_ledger": false,
"arrears_amount": 123.45,
"balance_due": 987.65,
"amount_paid": 987.65,
"loan_age_days": 123,
"days_since_last_payment": 123,
"last_payment_date": "2007-12-03T10:15:30Z",
"last_payment_amount": 987.65,
"days_past_due": 987.65,
"requires_arrears_escalation": false,
"ledger_id": "4",
"contract_id": 4,
"credit_expiry_date": "2007-12-03T10:15:30Z",
"opening_date": "2007-12-03T10:15:30Z",
"upfront_payment": 123.45
}
ReturnsNoteEntryType
Example
{
"_id": 4,
"text": "xyz789",
"author_id": "xyz789",
"author_name": "abc123",
"lane": "abc123",
"source_action": "xyz789",
"source_field": "xyz789",
"created_at": "2007-12-03T10:15:30Z"
}
ReturnsOpsActionedBy
ReturnsOpsAssignee
ReturnsOpsCreditInformation
Example
{
"account_status": "xyz789",
"pending_repair_damage_payment": 987.65,
"pending_upgrade_payment_calculated": 987.65,
"refund_status": "abc123",
"amount_refunded": 987.65,
"required_arrears_payment_amount": 123.45,
"arrears_amount_at_escalation": 123.45
}
ReturnsOpsCustomerDetails
ReturnsOpsNewProduct
Fields
| Field Name | Description |
|---|---|
requested_target_model - String
|
|
requested_target_display - String
|
|
assigned_device - ReturnsOpsProductSnapshot
|
Example
{
"requested_target_model": "xyz789",
"requested_target_display": "abc123",
"assigned_device": ReturnsOpsProductSnapshot
}
ReturnsOpsNotes
ReturnsOpsOldProduct
Fields
| Field Name | Description |
|---|---|
device - ReturnsOpsProductSnapshot
|
Example
{"device": ReturnsOpsProductSnapshot}
ReturnsOpsProductSnapshot
Example
{
"inventory_id": "4",
"imei": "abc123",
"sku_id": "4",
"sku_code": "xyz789",
"sku_name": "xyz789",
"stock_location": "xyz789",
"stock_type_1p_3p": "xyz789"
}
ReturnsOpsQueueResult
Fields
| Field Name | Description |
|---|---|
items - [ReturnsGraphQL!]!
|
|
total - Int!
|
|
hasMore - Boolean!
|
True when more queue items exist than returned (see limit). |
limit - Int!
|
Example
{
"items": [ReturnsGraphQL],
"total": 987,
"hasMore": false,
"limit": 123
}
ReturnsOpsReturnInfo
Fields
| Field Name | Description |
|---|---|
return_type - ReturnsRequestType!
|
|
display_return_type - String
|
OPS display label from intake metadata (for example "Return" or "Loan Canceller"). |
status - ReturnsStatus!
|
|
return_policy - ReturnPolicy
|
|
return_reason - ReturnReason
|
|
reverse_progress - ReverseProgress
|
Example
{
"return_type": "SWAP",
"display_return_type": "abc123",
"status": "PENDING",
"return_policy": "WITHIN_POLICY",
"return_reason": "FUNCTIONAL_ISSUES",
"reverse_progress": "TO_BE_PICKED_UP"
}
ReturnsOpsSaleDetails
Example
{
"channel": "xyz789",
"sfm_id": "abc123",
"sfm_dsr_id": "abc123",
"sfm_name": "xyz789",
"sales_person_id": "xyz789",
"sales_agent_dsr_id": "abc123",
"sales_person_name": "abc123",
"payment_status": "abc123",
"sale_status": "xyz789"
}
ReturnsOpsTableRow
Fields
| Field Name | Description |
|---|---|
returns_request_id - ID!
|
|
customer_id - ID!
|
|
sale_id - ID!
|
|
request_type - ReturnsRequestType!
|
|
status - ReturnsStatus!
|
|
ticket_id - String
|
|
return_reason - ReturnReason
|
|
return_policy - ReturnPolicy
|
|
submitted_at - DateTime
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
|
customer - JSON
|
|
products - JSON
|
|
sale - JSON
|
|
delivery - JSON
|
|
notes - String
|
|
superseded_by_request_id - ID
|
|
supersedes_request_id - ID
|
|
workflow_switch - ReturnsOpsWorkflowSwitch
|
|
customerDetails - ReturnsOpsCustomerDetails
|
|
oldProduct - ReturnsOpsOldProduct
|
|
newProduct - ReturnsOpsNewProduct
|
|
returnInfo - ReturnsOpsReturnInfo
|
|
creditInformation - ReturnsOpsCreditInformation
|
|
saleDetails - ReturnsOpsSaleDetails
|
|
timeline - ReturnsOpsTimeline
|
|
notesDetail - ReturnsOpsNotes
|
|
assignee - ReturnsOpsAssignee
|
|
actionedBy - ReturnsOpsActionedBy
|
User who performed the most recent workflow action |
financeEmailSentTo - String
|
Comma-separated finance notification recipients from linked refund |
swap_repair_mpesa_clearance - JSON
|
|
intent_consent_collected - Boolean
|
True when customer intent OTP is verified or bypassed on consent_records |
topup_confirmed_at - String
|
ISO timestamp when upgrade top-up payment was confirmed (from metadata) |
pending_manual_detach - Boolean
|
True when loan is closed but OPS must manually detach the sale device |
pending_detach_inventory_id - ID
|
Inventory id awaiting manual detach after loan closure |
manual_detach_detached_at - String
|
When OPS completed manual sale-device detach |
manual_detach_inventory_id - ID
|
Inventory id detached from the sale |
Example
{
"returns_request_id": 4,
"customer_id": "4",
"sale_id": 4,
"request_type": "SWAP",
"status": "PENDING",
"ticket_id": "abc123",
"return_reason": "FUNCTIONAL_ISSUES",
"return_policy": "WITHIN_POLICY",
"submitted_at": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"customer": {},
"products": {},
"sale": {},
"delivery": {},
"notes": "xyz789",
"superseded_by_request_id": "4",
"supersedes_request_id": "4",
"workflow_switch": ReturnsOpsWorkflowSwitch,
"customerDetails": ReturnsOpsCustomerDetails,
"oldProduct": ReturnsOpsOldProduct,
"newProduct": ReturnsOpsNewProduct,
"returnInfo": ReturnsOpsReturnInfo,
"creditInformation": ReturnsOpsCreditInformation,
"saleDetails": ReturnsOpsSaleDetails,
"timeline": ReturnsOpsTimeline,
"notesDetail": ReturnsOpsNotes,
"assignee": ReturnsOpsAssignee,
"actionedBy": ReturnsOpsActionedBy,
"financeEmailSentTo": "xyz789",
"swap_repair_mpesa_clearance": {},
"intent_consent_collected": true,
"topup_confirmed_at": "xyz789",
"pending_manual_detach": true,
"pending_detach_inventory_id": 4,
"manual_detach_detached_at": "abc123",
"manual_detach_inventory_id": "4"
}
ReturnsOpsTimeline
ReturnsOpsWorkflowSwitch
Fields
| Field Name | Description |
|---|---|
from_type - ReturnsRequestType
|
|
to_type - ReturnsRequestType
|
|
switched_at - DateTime
|
|
switched_by - ID
|
|
reason - String
|
|
force_switch - Boolean
|
|
source_status - ReturnsStatus
|
|
child_request_id - ID
|
Example
{
"from_type": "SWAP",
"to_type": "SWAP",
"switched_at": "2007-12-03T10:15:30Z",
"switched_by": "4",
"reason": "abc123",
"force_switch": true,
"source_status": "PENDING",
"child_request_id": 4
}
ReturnsRequestType
Description
Type of returns request
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"SWAP"
ReturnsRequestTypeFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ReturnsRequestType
|
|
ne - ReturnsRequestType
|
|
in - [ReturnsRequestType!]
|
|
notIn - [ReturnsRequestType!]
|
Example
{"eq": "SWAP", "ne": "SWAP", "in": ["SWAP"], "notIn": ["SWAP"]}
ReturnsStatus
Description
Status of a returns request
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
ReturnsStatusFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ReturnsStatus
|
|
ne - ReturnsStatus
|
|
in - [ReturnsStatus!]
|
|
notIn - [ReturnsStatus!]
|
Example
{"eq": "PENDING", "ne": "PENDING", "in": ["PENDING"], "notIn": ["PENDING"]}
Other
AccountStatusNamespace
Fields
| Field Name | Description |
|---|---|
calculateAccountStatus - StatusCalculationResult!
|
Calculate account status |
Arguments
|
|
Example
{"calculateAccountStatus": StatusCalculationResult}
ActionApprovalStatusEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
ActionStatusEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"DRAFT"
ActionTypeEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"NOTE"
AddAgentToCohortInput
Fields
| Input Field | Description |
|---|---|
cohort_id - String!
|
|
agent_profile_ids - [String!]!
|
|
enrollment_notes - String
|
|
enrolled_by - String!
|
Example
{
"cohort_id": "xyz789",
"agent_profile_ids": ["xyz789"],
"enrollment_notes": "abc123",
"enrolled_by": "abc123"
}
AdjustmentReasonEnum
Description
Reason of payment adjustment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"DEPOSIT"
AdjustmentStatusEnum
Description
Status of payment adjustment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"EFFECTED"
AdjustmentTypeEnum
Description
Type of payment adjustment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"REFUND"
AgingBucketType
Example
{"lessThan1h": 123, "from1hTo4h": 123, "from4hTo12h": 987, "moreThan12h": 987}
AgingResult
AirtimeDistributionModeEnum
Description
Mode of airtime distribution
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"MANUAL"
AllocatePaymentToRepairSaleInput
Fields
| Input Field | Description |
|---|---|
payment_id - ID!
|
|
sale_id - ID!
|
|
excess_action - RepairExcessActionEnum
|
|
excess_target_sale_id - ID
|
|
excess_reason - String
|
Example
{
"payment_id": 4,
"sale_id": "4",
"excess_action": "LEAVE_IN_WALLET",
"excess_target_sale_id": 4,
"excess_reason": "xyz789"
}
AllocationStatusEnum
Description
Status of an inventory allocation
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"RESERVED"
ApplyEarlySettlementInput
ApplyEarlySettlementResultType
Fields
| Field Name | Description |
|---|---|
payment_id - ID!
|
|
adjustment_id - ID!
|
|
settled_at - DateTime!
|
|
quote_used - EarlySettlementQuoteType!
|
|
contract - LoanContractDto!
|
|
latest_ledger - LoanLedgerDto
|
Example
{
"payment_id": 4,
"adjustment_id": 4,
"settled_at": "2007-12-03T10:15:30Z",
"quote_used": EarlySettlementQuoteType,
"contract": LoanContractDto,
"latest_ledger": LoanLedgerDto
}
AssignAgentInput
Fields
| Input Field | Description |
|---|---|
agentId - String!
|
|
agentType - AssignedAgentType!
|
|
hasStarted - Boolean
|
Whether the agent has started working. Default = false |
applicationId - String!
|
|
justification - String
|
Reason for this assignment, added to the audit log |
Example
{
"agentId": "xyz789",
"agentType": "SCORER",
"hasStarted": true,
"applicationId": "abc123",
"justification": "abc123"
}
AssignAgentPayload
Fields
| Input Field | Description |
|---|---|
agentId - String!
|
|
agentType - AssignedAgentType!
|
|
hasStarted - Boolean
|
Whether the agent has started working. Default = false |
Example
{
"agentId": "xyz789",
"agentType": "SCORER",
"hasStarted": true
}
AssignStaffToRegionInput
Fields
| Input Field | Description |
|---|---|
staff_Id - String!
|
|
region - String!
|
|
territory - TerritoryInput
|
|
assignment_notes - String
|
|
assigned_by - String!
|
Example
{
"staff_Id": "abc123",
"region": "xyz789",
"territory": TerritoryInput,
"assignment_notes": "abc123",
"assigned_by": "xyz789"
}
AssignStaffToShopInput
AssignTerritoryInput
Fields
| Input Field | Description |
|---|---|
entityId - String!
|
|
entityType - EntityType!
|
|
territoryId - ID!
|
|
effectiveDate - String
|
Example
{
"entityId": "xyz789",
"entityType": "AGENT",
"territoryId": "4",
"effectiveDate": "abc123"
}
AssignTrainerToCohortInput
AssignedAgentType
Description
Type of agent assigned to a credit application
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"SCORER"
AssignmentStatusEnum
Description
Assignment status of partners
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"UNASSIGNED"
AttachRolesToUserInput
Fields
| Input Field | Description |
|---|---|
userId - ID!
|
|
roleNames - [String!]!
|
|
realm - String
|
Example
{
"userId": "4",
"roleNames": ["abc123"],
"realm": "xyz789"
}
AvailableDevicesResultGraphQL
Fields
| Field Name | Description |
|---|---|
fateGuide - FateGuideScoresType!
|
|
products - [SellerCatalogObjectType!]!
|
|
preferredProduct - SellerCatalogObjectType
|
|
productFilter - OnboardingProductFilterType
|
|
pagination - OnboardingPaginationMetadataType
|
|
availablePlans - [PricingCalculationType!]
|
|
pricePlans - [PricePlanObjectType!]
|
Example
{
"fateGuide": FateGuideScoresType,
"products": [SellerCatalogObjectType],
"preferredProduct": SellerCatalogObjectType,
"productFilter": OnboardingProductFilterType,
"pagination": OnboardingPaginationMetadataType,
"availablePlans": [PricingCalculationType],
"pricePlans": [PricePlanObjectType]
}
BaseMessageInput
BaseMessageObjectType
Boolean
Description
The Boolean scalar type represents true or false.
Example
true
BooleanFilterInput
BulkConfigInput
Description
Bulk config input
Fields
| Input Field | Description |
|---|---|
configs - [CreateConfigInput!]!
|
Example
{"configs": [CreateConfigInput]}
BulkConfigMutationResponse
BulkInventoryError
BulkInventoryResult
Fields
| Field Name | Description |
|---|---|
success - [InventoryObjectType!]!
|
Successfully created inventory items |
failed - [BulkInventoryError!]!
|
Failed inventory items with error details |
Example
{
"success": [InventoryObjectType],
"failed": [BulkInventoryError]
}
CacheCleared
CalculateOnboardingFateGuideInput
Fields
| Input Field | Description |
|---|---|
applicationId - ID!
|
|
queuePrescreening - Boolean
|
|
type - FateGuideType!
|
|
source - OnboardingFateGuideSource!
|
Example
{
"applicationId": 4,
"queuePrescreening": false,
"type": "PRESCREENING",
"source": "PRESCREENING"
}
CallActivityStatsType
Description
Actual call activity sourced from application_call_details records. Only populated for the CREDIT_CALL queue.
Fields
| Field Name | Description |
|---|---|
totalCalls - Int!
|
Total number of call records started within the time frame. Includes repeat attempts on the same application. |
completedCalls - Int!
|
Number of call records that have a call_ended_at within the time frame (treated as completed calls). |
uniqueApplications - Int!
|
Distinct applications that were called within the time frame |
totalCallDurationSeconds - Float!
|
Sum of call_duration_seconds across calls within the time frame |
averageCallDurationSeconds - Float!
|
Average call_duration_seconds across calls within the time frame |
Example
{
"totalCalls": 987,
"completedCalls": 123,
"uniqueApplications": 123,
"totalCallDurationSeconds": 123.45,
"averageCallDurationSeconds": 987.65
}
CallDetailsNokInput
Example
{
"call_status": "abc123",
"notes": "abc123",
"relation": "abc123",
"consent": "xyz789",
"idNumber": "abc123"
}
CallDetailsNokType
CallDispositionFilterInput
Description
Filter input for call disposition queries
Fields
| Input Field | Description |
|---|---|
application - ApplicationFilterInput
|
Filter by related application fields |
application_id - StringFilterInput
|
Filter by application ID |
customer_id - StringFilterInput
|
Filter by customer ID |
disposition - StringFilterInput
|
Filter by call disposition type |
priority - CallPriorityFilterInput
|
Filter by priority level |
notes - StringFilterInput
|
Filter by notes |
next_call_date - DateFilterInput
|
Filter by next call date |
createdAt - DateFilterInput
|
Filter by creation date |
updatedAt - DateFilterInput
|
Filter by last update date |
or - [CallDispositionFilterInput!]
|
Logical OR — match documents satisfying any of the given filters |
and - [CallDispositionFilterInput!]
|
Logical AND — match documents satisfying all of the given filters |
Example
{
"application": ApplicationFilterInput,
"application_id": StringFilterInput,
"customer_id": StringFilterInput,
"disposition": StringFilterInput,
"priority": CallPriorityFilterInput,
"notes": StringFilterInput,
"next_call_date": DateFilterInput,
"createdAt": DateFilterInput,
"updatedAt": DateFilterInput,
"or": [CallDispositionFilterInput],
"and": [CallDispositionFilterInput]
}
CallDispositionType
Example
{
"_id": "4",
"application_id": 4,
"application": ApplicationEntityGraphQL,
"disposition": "abc123",
"notes": "xyz789",
"priority": "xyz789",
"next_call_date": "2007-12-03T10:15:30Z",
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
CallPriority
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"NONE"
CallPriorityFilterInput
Fields
| Input Field | Description |
|---|---|
eq - CallPriority
|
|
ne - CallPriority
|
|
in - [CallPriority!]
|
|
notIn - [CallPriority!]
|
Example
{"eq": "NONE", "ne": "NONE", "in": ["NONE"], "notIn": ["NONE"]}
CallStatus
Description
Status of the credit call
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ready"
CardRequestInput
Example
{
"amount": 123.45,
"currency": "abc123",
"reference": "xyz789",
"customer_id": "abc123",
"wallet_id": "xyz789",
"description": "xyz789",
"metadata": {},
"email": "abc123",
"cardToken": "xyz789",
"redirectUrl": "abc123"
}
CategoriesNamespace
Fields
| Field Name | Description |
|---|---|
createCategory - CategoryObjectType!
|
|
Arguments
|
|
category - CategoryObjectType!
|
|
Arguments
|
|
categories - [CategoryObjectType!]!
|
|
Arguments
|
|
categoriesWithOffsetPagination - OffsetPaginatedCategories!
|
|
Arguments
|
|
categoriesWithCursorPagination - CursorPaginatedCategories!
|
|
Arguments
|
|
updateCategory - CategoryObjectType!
|
|
Arguments
|
|
deleteCategory - Boolean!
|
|
Arguments
|
|
categoriesCount - Float!
|
|
Arguments
|
|
categoryHierarchy - [CategoryObjectType!]!
|
|
Arguments
|
|
categoryPath - [CategoryObjectType!]!
|
|
Arguments
|
|
activeCategories - [CategoryObjectType!]!
|
|
Arguments
|
|
Example
{
"createCategory": CategoryObjectType,
"category": CategoryObjectType,
"categories": [CategoryObjectType],
"categoriesWithOffsetPagination": OffsetPaginatedCategories,
"categoriesWithCursorPagination": CursorPaginatedCategories,
"updateCategory": CategoryObjectType,
"deleteCategory": false,
"categoriesCount": 987.65,
"categoryHierarchy": [CategoryObjectType],
"categoryPath": [CategoryObjectType],
"activeCategories": [CategoryObjectType]
}
CollectionMethod
Description
Method used to collect the device
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"FIELD_AGENT"
CombinedRiskFlag
Description
Combined risk flag: HIGH_RISK if active risk records exist, LOW_RISK otherwise
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"HIGH_RISK"
CombinedRiskFlagResultType
Fields
| Field Name | Description |
|---|---|
flag - CombinedRiskFlag!
|
|
risks - [RawRiskDto!]!
|
Example
{"flag": "HIGH_RISK", "risks": [RawRiskDto]}
ConditionFilterInput
Description
Filter input for querying conditions
Example
{
"grade": "xyz789",
"name": "xyz789",
"is_active": false,
"available_for_sellers": true
}
ConditionObjectType
Fields
| Field Name | Description |
|---|---|
condition_id - ID!
|
Unique condition identifier |
grade - String!
|
Condition grade code |
name - String!
|
Display name |
sort_order - Int
|
Display order |
color_hex - String
|
Badge color |
badge_icon - String
|
Icon identifier |
criteria - JSON!
|
Condition criteria |
description - String
|
Customer-facing description |
internal_notes - String
|
Staff guidelines |
verification_requirements - JSON
|
Required tests/photos |
warranty_months - Int
|
Warranty period in months |
price_multiplier - Float
|
Price adjustment (1.00 = 100%) |
financing_impact - JSON
|
PAYGO loan term adjustments |
seller_requirements - JSON
|
Who can sell this grade |
is_active - Boolean!
|
Is condition available? |
available_for_sellers - Boolean!
|
Can sellers list this? |
created_at - DateTime!
|
Creation timestamp |
updated_at - DateTime!
|
Last update timestamp |
Example
{
"condition_id": 4,
"grade": "xyz789",
"name": "xyz789",
"sort_order": 987,
"color_hex": "abc123",
"badge_icon": "abc123",
"criteria": {},
"description": "abc123",
"internal_notes": "abc123",
"verification_requirements": {},
"warranty_months": 987,
"price_multiplier": 123.45,
"financing_impact": {},
"seller_requirements": {},
"is_active": false,
"available_for_sellers": false,
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z"
}
ConditionsNamespace
Fields
| Field Name | Description |
|---|---|
createCondition - ConditionObjectType!
|
|
Arguments
|
|
condition - ConditionObjectType!
|
|
Arguments
|
|
conditions - [ConditionObjectType!]!
|
|
Arguments
|
|
conditionsWithOffsetPagination - OffsetPaginatedConditions!
|
|
Arguments
|
|
conditionsWithCursorPagination - CursorPaginatedConditions!
|
|
Arguments
|
|
updateCondition - ConditionObjectType!
|
|
Arguments
|
|
deleteCondition - Boolean!
|
|
Arguments
|
|
conditionsCount - Float!
|
|
Arguments
|
|
Example
{
"createCondition": ConditionObjectType,
"condition": ConditionObjectType,
"conditions": [ConditionObjectType],
"conditionsWithOffsetPagination": OffsetPaginatedConditions,
"conditionsWithCursorPagination": CursorPaginatedConditions,
"updateCondition": ConditionObjectType,
"deleteCondition": false,
"conditionsCount": 123.45
}
ConfirmedDeliveryLocationInput
ConfirmedDeliveryLocationObjectType
ConfirmedDeliveryTypeEnum
Description
Whether the confirmed delivery is a delivery or a pickup
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"DELIVERY"
ConfirmedDeliveryTypeNameEnum
Description
Named delivery channel for the confirmed delivery type
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"MO"
ConsentRecordType
Fields
| Field Name | Description |
|---|---|
stage - ConsentStage!
|
|
consent_type - ConsentType!
|
|
verified_at - DateTime
|
|
status - ConsentStatus
|
|
created_at - DateTime
|
|
is_bypassed - Boolean
|
|
bypass_reason - String
|
|
bypassed_by - String
|
Example
{
"stage": "INTENT",
"consent_type": "OTP",
"verified_at": "2007-12-03T10:15:30Z",
"status": "PENDING",
"created_at": "2007-12-03T10:15:30Z",
"is_bypassed": true,
"bypass_reason": "xyz789",
"bypassed_by": "xyz789"
}
ConsentStage
Description
Stage of consent in the lifecycle flow
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"INTENT"
ConsentStatus
Description
Status of a consent record
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
ConsentType
Description
Type of consent verification
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"OTP"
ContactPersonDto
ContactPersonInput
CorrectCashSaleOverAllocationsInput
CorrectCashSaleOverAllocationsResultType
Fields
| Field Name | Description |
|---|---|
dry_run - Boolean!
|
|
corrected - [SaleCorrectionResultType!]!
|
|
skipped_sale_ids - [String!]!
|
|
corrected_count - Float!
|
|
skipped_count - Float!
|
|
total_excess - Float!
|
|
enqueue_failed_sale_ids - [String!]!
|
Example
{
"dry_run": true,
"corrected": [SaleCorrectionResultType],
"skipped_sale_ids": ["abc123"],
"corrected_count": 123.45,
"skipped_count": 123.45,
"total_excess": 987.65,
"enqueue_failed_sale_ids": ["abc123"]
}
CoverageType
Description
Territory coverage status types
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"EXCLUSIVE"
CreateApplicationCallDetailsInput
Fields
| Input Field | Description |
|---|---|
application_id - ID!
|
Application ID associated with the call details |
status - String
|
Call status |
notes - String
|
Notes or comments from the call |
agent_name - String
|
Agent name who made the call |
caller_id - String
|
Caller ID used during the call |
delivery_location_type - String
|
Type of delivery location (e.g., home, office) |
priority - String
|
Priority level of the call |
call_date - DateTime
|
Date when the call was made |
follow_up_required - Boolean
|
Whether a follow-up is required |
customer_location - String
|
Customer's physical location |
employer_info - String
|
Employer information provided during the call |
employment_details - String
|
Employment details shared by customer |
delivery_location - String
|
Delivery location provided during call |
product_choice - String
|
Product the customer chose |
confirmed_price_plan - String
|
Confirmed price plan chosen by the customer |
geo_address - String
|
Geographical address (geo-coded) |
delivery_or_collection_location - String
|
Delivery or collection location preference |
other_delivery_notes - String
|
Other notes about delivery instructions |
call_outcome - String
|
Outcome of the call |
call_notes - String
|
Notes from the call |
call_ended_at - DateTime
|
Timestamp when the call ended |
call_started_at - DateTime
|
Timestamp when the call started |
call_duration_seconds - Int
|
Duration of the call in seconds |
call_type - CreditCallTypeEnum
|
Type of credit call — NOK or NO_NOK |
nok - CallDetailsNokInput
|
Next of kin details |
customer_general_location - String
|
Customer general location |
preferred_delivery_day - DateTime
|
Preferred delivery day |
preferred_delivery_slot - String
|
Preferred delivery slot |
work_location - String
|
Work location of the customer |
work_location_link - String
|
Work location link for the customer |
screening_consent - String
|
Screening consent |
accept_loan_terms - String
|
Accept loan terms |
extras - JSON
|
Extra metadata for the call |
createdAt - DateTime
|
Creation timestamp |
updatedAt - DateTime
|
Last update timestamp |
Example
{
"application_id": 4,
"status": "abc123",
"notes": "abc123",
"agent_name": "xyz789",
"caller_id": "xyz789",
"delivery_location_type": "xyz789",
"priority": "xyz789",
"call_date": "2007-12-03T10:15:30Z",
"follow_up_required": true,
"customer_location": "xyz789",
"employer_info": "xyz789",
"employment_details": "abc123",
"delivery_location": "abc123",
"product_choice": "xyz789",
"confirmed_price_plan": "xyz789",
"geo_address": "xyz789",
"delivery_or_collection_location": "abc123",
"other_delivery_notes": "abc123",
"call_outcome": "xyz789",
"call_notes": "abc123",
"call_ended_at": "2007-12-03T10:15:30Z",
"call_started_at": "2007-12-03T10:15:30Z",
"call_duration_seconds": 123,
"call_type": "NOK",
"nok": CallDetailsNokInput,
"customer_general_location": "xyz789",
"preferred_delivery_day": "2007-12-03T10:15:30Z",
"preferred_delivery_slot": "abc123",
"work_location": "xyz789",
"work_location_link": "xyz789",
"screening_consent": "xyz789",
"accept_loan_terms": "abc123",
"extras": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
CreateAuditLogInput
Fields
| Input Field | Description |
|---|---|
object_type - String
|
|
object_id - ID
|
|
action_type - ActionTypeEnum!
|
|
action_description - String
|
|
action_status - ActionStatusEnum
|
|
auditor_id - ID
|
|
auditor_username - String
|
|
auditor_email - String
|
|
actor_metadata - JSON
|
|
object_old_value - JSON
|
|
object_new_value - JSON
|
|
field_changes - JSON
|
|
action_requires_approval - Boolean
|
|
action_approval_levels - [String!]
|
|
action_requested_by_id - ID
|
|
action_requested_by_username - String
|
|
action_approver_id - ID
|
|
action_approver_username - String
|
|
action_approved_at - DateTime
|
|
action_approval_status - String
|
|
action_approval_notes - String
|
|
ip_address - String
|
|
user_agent - String
|
|
device_info - JSON
|
|
session_id - String
|
|
audited_at - DateTime
|
|
visibility_level - VisibilityLevelEnum
|
Example
{
"object_type": "abc123",
"object_id": 4,
"action_type": "NOTE",
"action_description": "xyz789",
"action_status": "DRAFT",
"auditor_id": 4,
"auditor_username": "xyz789",
"auditor_email": "xyz789",
"actor_metadata": {},
"object_old_value": {},
"object_new_value": {},
"field_changes": {},
"action_requires_approval": true,
"action_approval_levels": ["xyz789"],
"action_requested_by_id": "4",
"action_requested_by_username": "abc123",
"action_approver_id": 4,
"action_approver_username": "abc123",
"action_approved_at": "2007-12-03T10:15:30Z",
"action_approval_status": "abc123",
"action_approval_notes": "xyz789",
"ip_address": "abc123",
"user_agent": "abc123",
"device_info": {},
"session_id": "xyz789",
"audited_at": "2007-12-03T10:15:30Z",
"visibility_level": "PUBLIC"
}
CreateCallDispositionInput
Fields
| Input Field | Description |
|---|---|
application_id - String!
|
Application ID associated with the call disposition |
disposition - String
|
Call disposition status |
notes - String
|
Notes or comments from the call |
priority - CallPriority
|
Priority level of the call |
next_call_date - DateTime
|
Next scheduled call date |
Example
{
"application_id": "abc123",
"disposition": "abc123",
"notes": "abc123",
"priority": "NONE",
"next_call_date": "2007-12-03T10:15:30Z"
}
CreateCategoryInput
Fields
| Input Field | Description |
|---|---|
name - String!
|
Category name |
slug - String!
|
URL-friendly name |
description - String
|
Category description |
icon - String
|
Category icon name |
required_attributes - JSON
|
Required attributes for this category |
sku_attributes - JSON
|
SKU attributes for this category |
parent_category_id - String
|
Parent category ID |
level - Int!
|
Hierarchy level (0, 1, or 2) |
path - String
|
Full path (materialized) |
sort_order - Int
|
Display order |
is_active - Boolean
|
Is category visible? |
meta_title - String
|
SEO title |
meta_description - String
|
SEO description |
Example
{
"name": "xyz789",
"slug": "xyz789",
"description": "abc123",
"icon": "xyz789",
"required_attributes": {},
"sku_attributes": {},
"parent_category_id": "xyz789",
"level": 987,
"path": "xyz789",
"sort_order": 987,
"is_active": true,
"meta_title": "xyz789",
"meta_description": "xyz789"
}
CreateCohortInput
Fields
| Input Field | Description |
|---|---|
cohort_name - String
|
|
cohort_type - CohortType!
|
|
training_track - PartnerTrackEnum!
|
|
cohort_status - CohortStatus
|
|
start_date - DateTime
|
|
end_date - DateTime
|
|
duration_weeks - Int
|
|
assigned_trainer_ids - [String!]
|
|
enrolled_agent_ids - [String!]
|
|
max_capacity - Int
|
|
training_location - String
|
|
region - String
|
|
curriculum_modules - [String!]
|
|
notes - String
|
|
created_by - String
|
Example
{
"cohort_name": "abc123",
"cohort_type": "AGENT_ONBOARDING",
"training_track": "SALES",
"cohort_status": "PLANNED",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"duration_weeks": 987,
"assigned_trainer_ids": ["abc123"],
"enrolled_agent_ids": ["abc123"],
"max_capacity": 123,
"training_location": "xyz789",
"region": "abc123",
"curriculum_modules": ["abc123"],
"notes": "abc123",
"created_by": "abc123"
}
CreateCommissionInput
Fields
| Input Field | Description |
|---|---|
channel_type - ChannelTypeEnum!
|
|
commission_type - CommissionDeterminationType!
|
|
attribute_type - CommissionAttributeType!
|
|
commission_value_type - CommissionValueType
|
|
sku_id - String
|
|
min_price - Float
|
|
max_price - Float
|
|
product_commission - Float
|
|
loan_commission - Float
|
|
cash_commission - Float
|
|
start_date - String!
|
|
end_date - String
|
|
is_active - Boolean
|
Example
{
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"attribute_type": "ALL",
"commission_value_type": "FLAT",
"sku_id": "abc123",
"min_price": 123.45,
"max_price": 987.65,
"product_commission": 123.45,
"loan_commission": 987.65,
"cash_commission": 123.45,
"start_date": "xyz789",
"end_date": "abc123",
"is_active": false
}
CreateCommissionOverrideInput
Example
{
"agent_profile_id": "xyz789",
"commission_rule_id": "xyz789",
"product_commission": 987.65,
"loan_commission": 123.45,
"cash_commission": 987.65,
"commission_value_type": "FLAT",
"is_active": false
}
CreateCommunicationInput
Fields
| Input Field | Description |
|---|---|
userId - String!
|
|
channel - NotificationChannel!
|
|
type - NotificationType
|
|
message - BaseMessageInput!
|
|
emailData - EmailDataInput
|
|
smsData - SmsDataInput
|
|
pushData - PushDataInput
|
|
inAppData - InAppDataInput
|
|
scheduledFor - DateTime
|
|
metadata - JSON
|
|
tags - [String!]
|
Example
{
"userId": "xyz789",
"channel": "PUSH",
"type": "INFO",
"message": BaseMessageInput,
"emailData": EmailDataInput,
"smsData": SmsDataInput,
"pushData": PushDataInput,
"inAppData": InAppDataInput,
"scheduledFor": "2007-12-03T10:15:30Z",
"metadata": {},
"tags": ["xyz789"]
}
CreateConditionInput
Fields
| Input Field | Description |
|---|---|
grade - String!
|
Condition grade code |
name - String!
|
Display name |
sort_order - Int!
|
Display order |
color_hex - String
|
Badge color |
badge_icon - String
|
Icon identifier |
criteria - JSON!
|
Condition criteria |
description - String!
|
Customer-facing description |
internal_notes - String
|
Staff guidelines |
verification_requirements - JSON
|
Required tests/photos |
warranty_months - Int
|
Warranty period in months |
price_multiplier - Float
|
Price adjustment (1.00 = 100%) |
financing_impact - JSON
|
PAYGO loan term adjustments |
seller_requirements - JSON
|
Who can sell this grade |
is_active - Boolean
|
Is condition available? |
available_for_sellers - Boolean
|
Can sellers list this? |
Example
{
"grade": "abc123",
"name": "abc123",
"sort_order": 987,
"color_hex": "xyz789",
"badge_icon": "xyz789",
"criteria": {},
"description": "abc123",
"internal_notes": "abc123",
"verification_requirements": {},
"warranty_months": 987,
"price_multiplier": 123.45,
"financing_impact": {},
"seller_requirements": {},
"is_active": true,
"available_for_sellers": true
}
CreateConfigInput
Description
Create config input
Fields
| Input Field | Description |
|---|---|
key - String!
|
|
value - JSON!
|
|
options - [String!]
|
|
scope - ConfigSystemEnum
|
|
client_id - String
|
|
user_id - String
|
|
role_id - String
|
|
value_type - ConfigSystemType
|
|
description - String
|
|
category - ConfigCategory
|
|
is_encrypted - Boolean
|
|
is_versioned - Boolean
|
Enable versioning for this config. Default = false |
is_protected - Boolean
|
Protect this config from deletion. Default = false |
is_ui_hidden - Boolean
|
Hide this config from the config editor UI. Default = false |
requires_validation - Boolean
|
Whether the config value should be validated against its JSON schema. Set to false to store arbitrary JSON without schema validation. Default = true |
value_schema - JSON
|
JSON Schema for validating the config value (backend validation + frontend form rendering) |
ui_hints - JSON
|
UI rendering hints for the config editor (e.g. component type) |
updated_by - String
|
|
platform - ConfigPlatformEnum
|
|
version - Int
|
|
status - ConfigStatusEnum
|
|
publish - Boolean
|
Publish immediately (for versioned configs). Default = true |
Example
{
"key": "xyz789",
"value": {},
"options": ["xyz789"],
"scope": "SYSTEM",
"client_id": "xyz789",
"user_id": "xyz789",
"role_id": "abc123",
"value_type": "STRING",
"description": "abc123",
"category": "GENERAL",
"is_encrypted": true,
"is_versioned": true,
"is_protected": false,
"is_ui_hidden": false,
"requires_validation": true,
"value_schema": {},
"ui_hints": {},
"updated_by": "abc123",
"platform": "ALL",
"version": 987,
"status": "DRAFT",
"publish": false
}
CreateCustomerFromApplicationInput
Fields
| Input Field | Description |
|---|---|
application_id - String!
|
Application ID to create customer from |
customer_status - CustomerStatusEnum
|
Customer status (defaults to ACTIVE) |
customer_type - CustomerTypeEnum
|
Customer type (defaults to INDIVIDUAL) |
organization_name - String
|
Override organization name (for organizations) |
organization_registration_number - String
|
Organization registration number (for organizations) |
customer_email_address - String
|
Override email address from application |
creation_notes - String
|
Additional context or notes for customer creation |
Example
{
"application_id": "xyz789",
"customer_status": "ACTIVE",
"customer_type": "INDIVIDUAL",
"organization_name": "abc123",
"organization_registration_number": "xyz789",
"customer_email_address": "abc123",
"creation_notes": "xyz789"
}
CreateCustomerReferralInput
CreateDealerAgentInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput!
|
|
owner_partner_profile_id - String!
|
|
whatsapp_number - String
|
|
assigned_sfm_id - String
|
Example
{
"user": UserRefInput,
"owner_partner_profile_id": "abc123",
"whatsapp_number": "xyz789",
"assigned_sfm_id": "xyz789"
}
CreateDealerOwnerInput
Fields
| Input Field | Description |
|---|---|
primary_contact - PartnerContactPersonInput!
|
|
organization - CreateSimpleOrganizationInput
|
|
assigned_sfm_id - String
|
|
location_details - LocationDetailsInput
|
|
whatsapp_number - String
|
Example
{
"primary_contact": PartnerContactPersonInput,
"organization": CreateSimpleOrganizationInput,
"assigned_sfm_id": "xyz789",
"location_details": LocationDetailsInput,
"whatsapp_number": "xyz789"
}
CreateDeliveryCallInput
Fields
| Input Field | Description |
|---|---|
order_id - ID!
|
|
called_by - ID!
|
|
confirmed_delivery_location - ConfirmedDeliveryLocationInput
|
|
spec_preference - SpecPreferenceInput
|
|
confirmed_delivery_date - String
|
|
confirmed_delivery_slot - DeliverySlotEnum
|
|
outcome - DeliveryCallOutcomeEnum
|
|
confirmed_delivery_type - ConfirmedDeliveryTypeEnum
|
|
confirmed_delivery_type_name - ConfirmedDeliveryTypeNameEnum
|
|
notes - String
|
|
metadata - JSON
|
Example
{
"order_id": 4,
"called_by": 4,
"confirmed_delivery_location": ConfirmedDeliveryLocationInput,
"spec_preference": SpecPreferenceInput,
"confirmed_delivery_date": "abc123",
"confirmed_delivery_slot": "MORNING",
"outcome": "CALL_BACK",
"confirmed_delivery_type": "DELIVERY",
"confirmed_delivery_type_name": "MO",
"notes": "xyz789",
"metadata": {}
}
CreateDeliveryInput
Example
{
"order_id": "4",
"seller_id": "4",
"assigned_rider_id": "4",
"delivery_status": "PENDING",
"delivery_address": {},
"tracking_number": "xyz789",
"estimated_arrival": "2007-12-03T10:15:30Z"
}
CreateDeliveryItemInput
CreateDowngradeRequestInput
Fields
| Input Field | Description |
|---|---|
customer_id - String!
|
Customer ID(uid) |
sale_id - String!
|
Sale ID |
ticket_id - String!
|
Linked support ticket ID or URL |
return_policy - ReturnPolicy!
|
Return policy selected at intake |
return_reason - ReturnReason!
|
Return reason |
target_device_model - String!
|
SKU — for decisioner context |
new_device_price - Float!
|
New device price in KES (TOTAL LOAN OR CASH PRICE) |
customer_notes - String
|
Notes from customer |
ops_notes - String
|
OPS notes captured at intake |
cxc_notes - String
|
CXC notes captured at intake |
intake_return_type_label - String
|
OPS matrix return type label when it differs from backend request_type |
submitted_by - String
|
Staff ID submitting the request (fallback when not authenticated) |
new_device_deposit - Float!
|
Deposit for the new device in KES |
price_plan - String!
|
Price plan for the new device |
no_stock_at_request - Boolean
|
True when an originating swap had no platform-owner stock and was switched to downgrade |
mpesa_arrears_clearance_reference - String
|
Optional M-Pesa confirmation code for audit when customer cleared arrears before intake |
Example
{
"customer_id": "xyz789",
"sale_id": "xyz789",
"ticket_id": "xyz789",
"return_policy": "WITHIN_POLICY",
"return_reason": "FUNCTIONAL_ISSUES",
"target_device_model": "abc123",
"new_device_price": 987.65,
"customer_notes": "xyz789",
"ops_notes": "xyz789",
"cxc_notes": "xyz789",
"intake_return_type_label": "abc123",
"submitted_by": "abc123",
"new_device_deposit": 123.45,
"price_plan": "abc123",
"no_stock_at_request": false,
"mpesa_arrears_clearance_reference": "xyz789"
}
CreateDraftPricePlanInput
Fields
| Input Field | Description |
|---|---|
tier_id - String
|
|
code - String
|
|
name - String
|
|
min_device_value - Float
|
|
max_device_value - Float
|
|
deposit_percent - Float
|
|
subsequent_loan_discount_percent - Float
|
|
deposit_percent_high - Float
|
|
loan_multiplier - Float
|
|
loan_multiplier_high - Float
|
|
mocare_percent - Float
|
|
duration_months - Int
|
|
duration_months_high - Int
|
|
payment_frequency - PaymentFrequencyEnum
|
|
effective_from - String
|
|
effective_to - String
|
|
early_payoff_discounts - [EarlyPayoffDiscountInput!]
|
|
status - PricePlanStatusEnum
|
|
is_private - Boolean
|
|
metadata - JSON
|
|
source_plan_id - String
|
Example
{
"tier_id": "xyz789",
"code": "xyz789",
"name": "abc123",
"min_device_value": 123.45,
"max_device_value": 987.65,
"deposit_percent": 987.65,
"subsequent_loan_discount_percent": 123.45,
"deposit_percent_high": 987.65,
"loan_multiplier": 123.45,
"loan_multiplier_high": 123.45,
"mocare_percent": 123.45,
"duration_months": 123,
"duration_months_high": 123,
"payment_frequency": "DAILY",
"effective_from": "xyz789",
"effective_to": "abc123",
"early_payoff_discounts": [EarlyPayoffDiscountInput],
"status": "ACTIVE",
"is_private": true,
"metadata": {},
"source_plan_id": "abc123"
}
CreateFlashSaleInput
Fields
| Input Field | Description |
|---|---|
title - String!
|
Flash sale title |
slug - String
|
|
description - String
|
|
start_date - DateTime!
|
Sale start date |
end_date - DateTime!
|
Sale end date |
status - FlashSaleStatusEnum!
|
|
max_quantity - Int
|
|
sold_quantity - Int
|
|
min_discount_percentage - Float
|
|
is_featured - Boolean
|
|
banner_image - String
|
|
icon_url - String
|
|
countdown_display - Boolean
|
|
priority - Int
|
|
participating_sellers - [String!]
|
|
performance_metrics - JSON
|
|
meta_title - String
|
|
meta_description - String
|
Example
{
"title": "xyz789",
"slug": "xyz789",
"description": "xyz789",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 987,
"sold_quantity": 123,
"min_discount_percentage": 123.45,
"is_featured": false,
"banner_image": "abc123",
"icon_url": "xyz789",
"countdown_display": true,
"priority": 987,
"participating_sellers": ["xyz789"],
"performance_metrics": {},
"meta_title": "xyz789",
"meta_description": "abc123"
}
CreateFlashSaleItemInput
Fields
| Input Field | Description |
|---|---|
flash_sale_id - String!
|
Flash sale ID |
seller_catalog_id - String!
|
Seller catalog ID |
product_id - String!
|
Product ID |
sku_id - String!
|
SKU ID |
original_price - Float!
|
Original price |
flash_sale_price - Float!
|
Flash sale price |
discount_percentage - Float!
|
Discount percentage |
stock_allocated - Int!
|
Stock allocated for sale |
stock_sold - Int
|
Stock sold |
stock_remaining - Int!
|
Stock remaining |
max_per_customer - Int
|
Maximum per customer |
display_priority - Int
|
Display priority |
is_featured - Boolean
|
Is item featured? |
badge_text - String
|
Badge text |
Example
{
"flash_sale_id": "abc123",
"seller_catalog_id": "xyz789",
"product_id": "abc123",
"sku_id": "abc123",
"original_price": 123.45,
"flash_sale_price": 123.45,
"discount_percentage": 123.45,
"stock_allocated": 987,
"stock_sold": 123,
"stock_remaining": 123,
"max_per_customer": 987,
"display_priority": 987,
"is_featured": false,
"badge_text": "xyz789"
}
CreateGroupInput
CreateInternalStaffProfileInput
Fields
| Input Field | Description |
|---|---|
partner_profile_id - String
|
|
operational_role - OperationalRoleEnum!
|
|
department - DepartmentEnum!
|
|
employee_id - String
|
|
employment_type - EmploymentTypeEnum
|
|
reports_to_id - String
|
|
team_members - [String!]
|
|
assigned_shop_id - String
|
|
assigned_outlet_id - String
|
|
assigned_region - String
|
|
assigned_territory - TerritoryInput
|
|
work_schedule - WorkScheduleInput
|
|
is_offline - Boolean
|
|
created_by - String
|
|
agent_profile_id - String
|
|
passport_photo - Upload
|
Example
{
"partner_profile_id": "abc123",
"operational_role": "SALES_FORCE_MANAGER",
"department": "SALES",
"employee_id": "xyz789",
"employment_type": "FULL_TIME",
"reports_to_id": "xyz789",
"team_members": ["abc123"],
"assigned_shop_id": "abc123",
"assigned_outlet_id": "xyz789",
"assigned_region": "abc123",
"assigned_territory": TerritoryInput,
"work_schedule": WorkScheduleInput,
"is_offline": false,
"created_by": "xyz789",
"agent_profile_id": "xyz789",
"passport_photo": Upload
}
CreateInventoryAllocationInput
Example
{
"order_item_id": "4",
"inventory_id": 4,
"quantity_allocated": 987.65,
"allocation_status": "RESERVED",
"expiry_date": "2007-12-03T10:15:30Z",
"metadata": {}
}
CreateInventoryInput
Fields
| Input Field | Description |
|---|---|
product_id - String
|
Product ID |
sku_id - String!
|
SKU ID |
condition_id - String
|
Condition ID |
seller_catalog_id - String
|
Seller catalog ID |
seller_id - String!
|
Seller ID |
serial_number - JSON!
|
Serial number(s) (IMEI/SN) - string for single, array for bulk creation |
identifiers - JSON
|
Additional identifiers |
physical_state - PhysicalState!
|
Physical state of device |
mdm_enrollment - MdmEnrollmentStatusEnum
|
Canonical MDM enrollment status |
stock_status_type - StockStatusTypeEnum
|
High-level stock status type |
stock_status_name - StockStatusNameEnum
|
Detailed stock status name |
stock_origin - StockOriginEnum
|
Origin of stock |
stock_type - StockTypeEnum
|
Ownership stock type |
b2b - Boolean
|
Whether the stock item is B2B inventory. Default = false |
qc_report - QCReportInput
|
Quality control report |
qc_report_link - String
|
QC report file URL |
qc_status - QCStatus
|
Quality control status. Default = PENDING |
qc_status_type - QCStatusTypeEnum
|
QC status type classification (Inbound, Repair, Reverse) |
unit_cost - Float
|
Unit cost paid by seller. Default = 0 |
contract_id - String
|
Active contract ID |
mdm_status - JSON
|
MDM status information |
batch_number - String
|
Batch number |
location_id - String
|
Current location ID |
inspection_report - String
|
Inspection report |
warranty - JSON
|
Warranty information |
supplier_name - String
|
Supplier name |
supplier_order_reference - String
|
Supplier order reference |
customer_id - String
|
Customer ID |
sale_id - String
|
Sale ID |
Example
{
"product_id": "xyz789",
"sku_id": "xyz789",
"condition_id": "abc123",
"seller_catalog_id": "abc123",
"seller_id": "xyz789",
"serial_number": {},
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": true,
"qc_report": QCReportInput,
"qc_report_link": "xyz789",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 123.45,
"contract_id": "xyz789",
"mdm_status": {},
"batch_number": "xyz789",
"location_id": "abc123",
"inspection_report": "abc123",
"warranty": {},
"supplier_name": "abc123",
"supplier_order_reference": "abc123",
"customer_id": "abc123",
"sale_id": "abc123"
}
CreateInventoryLocationInput
Fields
| Input Field | Description |
|---|---|
location_name - String!
|
Location name |
location_type - LocationTypeEnum!
|
Type of location |
location_code - String
|
Location code |
address - String
|
Physical address |
city - String
|
City |
region - String
|
Region or state |
coordinates - InventoryCoordinatesInput
|
GPS coordinates |
location_details - InventoryLocationDetailsInput
|
Structured location details |
user_id - String
|
Associated agent profile ID |
capacity - Int
|
Maximum capacity |
current_stock - Int
|
Current stock count |
is_active - Boolean
|
Is location active? |
operating_hours - JSON
|
Operating hours |
seller_id - String
|
Associated seller ID |
Example
{
"location_name": "abc123",
"location_type": "TRANSIT_INBOUND",
"location_code": "abc123",
"address": "abc123",
"city": "xyz789",
"region": "xyz789",
"coordinates": InventoryCoordinatesInput,
"location_details": InventoryLocationDetailsInput,
"user_id": "abc123",
"capacity": 123,
"current_stock": 987,
"is_active": false,
"operating_hours": {},
"seller_id": "xyz789"
}
CreateLeadGenerationInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput!
|
|
referral_source - String
|
|
assigned_sfm_id - String
|
|
whatsapp_number - String
|
Example
{
"user": UserRefInput,
"referral_source": "xyz789",
"assigned_sfm_id": "abc123",
"whatsapp_number": "abc123"
}
CreateLoanContractInput
Fields
| Input Field | Description |
|---|---|
sale_id - String!
|
Sale ID associated with this loan contract |
customer_id - String
|
Customer ID associated with this loan contract |
price_plan_id - String
|
Originating price plan ID used only to snapshot loan terms |
opening_date - DateTime!
|
Loan contract opening date |
duration - Float
|
Loan duration in days. Default = 364 |
upfront_payment - Float!
|
Upfront payment amount. Default = 0 |
deposit - Float
|
Deposit amount. Default = 0 |
repayment_type - RepaymentTypeEnum!
|
Repayment frequency. Default = WEEKLY |
gross_loan_amount - Float!
|
Gross loan amount |
interest_rate - Float!
|
Daily interest rate |
is_restructured - Boolean!
|
Whether this is a restructured loan. Default = false |
original_contract_id - String
|
Original contract ID if restructured |
metadata - JSON
|
Additional metadata |
loan_status_override - LoanAccountStatusEnum
|
Manual override for calculated loan account status |
loan_product_code - String
|
Loan product code |
Example
{
"sale_id": "abc123",
"customer_id": "abc123",
"price_plan_id": "abc123",
"opening_date": "2007-12-03T10:15:30Z",
"duration": 123.45,
"upfront_payment": 987.65,
"deposit": 987.65,
"repayment_type": "DAILY",
"gross_loan_amount": 123.45,
"interest_rate": 123.45,
"is_restructured": false,
"original_contract_id": "abc123",
"metadata": {},
"loan_status_override": "NEW_ACTIVE",
"loan_product_code": "xyz789"
}
CreateLoanDelinquencyTrackingInput
Fields
| Input Field | Description |
|---|---|
contract_id - String!
|
Contract ID associated with this tracking record |
status - DelinquencyStatusEnum!
|
Delinquency status. Default = CURRENT |
delinquency_start_date - DateTime
|
Date when delinquency started |
default_date - DateTime
|
Date when account defaulted |
days_past_due - Float!
|
Number of days past due. Default = 0 |
amount_overdue - Float!
|
Amount currently overdue. Default = 0 |
escalation_level - EscalationLevelEnum!
|
Collection escalation level. Default = REMINDER |
collection_actions - JSON
|
Collection actions history |
write_off_date - DateTime
|
Date when account was written off |
recovery_amount - Float
|
Amount recovered |
recovery_probability - Float
|
Recovery probability (0-1) |
last_contact_date - DateTime
|
Last contact date with customer |
next_action_date - DateTime
|
Next planned action date |
assigned_collector - String
|
Assigned collector name |
notes - String
|
Collection notes |
metadata - JSON
|
Additional metadata |
Example
{
"contract_id": "abc123",
"status": "CURRENT",
"delinquency_start_date": "2007-12-03T10:15:30Z",
"default_date": "2007-12-03T10:15:30Z",
"days_past_due": 987.65,
"amount_overdue": 987.65,
"escalation_level": "REMINDER",
"collection_actions": {},
"write_off_date": "2007-12-03T10:15:30Z",
"recovery_amount": 123.45,
"recovery_probability": 123.45,
"last_contact_date": "2007-12-03T10:15:30Z",
"next_action_date": "2007-12-03T10:15:30Z",
"assigned_collector": "abc123",
"notes": "abc123",
"metadata": {}
}
CreateLoanInstallmentInput
Fields
| Input Field | Description |
|---|---|
contract_id - String!
|
Contract ID associated with this installment |
installment_number - Float!
|
Installment number in sequence |
installment_type - InstallmentTypeEnum!
|
Type of installment. Default = REGULAR |
due_date - DateTime!
|
Installment due date |
due_repayment_amount - Float!
|
Total amount due for this installment |
due_repayment_principal - Float!
|
Principal amount portion |
due_repayment_interest - Float!
|
Interest amount portion |
penalty_amount - Float!
|
Penalty amount portion. Default = 0 |
due_cumulative_principal - Float!
|
Cumulative principal to date |
due_cumulative_interest - Float!
|
Cumulative interest to date |
cumulative_expected_repay - Float!
|
Cumulative expected repayment (due_cumulative_principal + due_cumulative_interest) |
paid_principal - Float!
|
Principal amount paid. Default = 0 |
paid_interest - Float!
|
Interest amount paid. Default = 0 |
paid_penalty - Float!
|
Penalty amount paid. Default = 0 |
outstanding_amount - Float!
|
Outstanding amount remaining. Default = 0 |
amount_paid - Float!
|
Total amount paid for this installment. Default = 0 |
status - InstallmentStatusEnum!
|
Installment status. Default = PENDING |
paid_date - DateTime
|
Date when installment was paid |
days_overdue - Float!
|
Days overdue. Default = 0 |
installment_year_month - String!
|
Installment year-month (YYYY-MM) |
metadata - JSON
|
Additional metadata |
Example
{
"contract_id": "abc123",
"installment_number": 987.65,
"installment_type": "REGULAR",
"due_date": "2007-12-03T10:15:30Z",
"due_repayment_amount": 987.65,
"due_repayment_principal": 123.45,
"due_repayment_interest": 123.45,
"penalty_amount": 123.45,
"due_cumulative_principal": 987.65,
"due_cumulative_interest": 987.65,
"cumulative_expected_repay": 123.45,
"paid_principal": 123.45,
"paid_interest": 987.65,
"paid_penalty": 123.45,
"outstanding_amount": 987.65,
"amount_paid": 123.45,
"status": "PENDING",
"paid_date": "2007-12-03T10:15:30Z",
"days_overdue": 123.45,
"installment_year_month": "xyz789",
"metadata": {}
}
CreateLoanLedgerInput
Fields
| Input Field | Description |
|---|---|
contract_id - String!
|
Contract ID associated with this ledger entry |
transaction_date - DateTime
|
Transaction date |
transaction_type - TransactionTypeEnum!
|
Type of transaction |
transaction_status - TransactionStatusEnum!
|
Transaction status. Default = PENDING |
debit_credit - DebitCreditEnum!
|
Debit or credit transaction |
balance_due - Float!
|
Amount due on the loan |
amount_paid - Float!
|
Amount paid in this transaction |
arrears_amount - Float!
|
Arrears amount. Default = 0 |
advance_amount - Float!
|
Advance payment amount. Default = 0 |
next_due_amount - Float!
|
Next due amount |
past_due - Float!
|
Past due amount as percentage. Default = 0 |
days_past_due - Float!
|
Days past due. Default = 0 |
loan_age_days - Float!
|
Loan age in days. Default = 0 |
repayment_due - Float!
|
Total repayment due. Default = 0 |
days_since_last_payment - Float!
|
Days since last payment. Default = 0 |
next_invoice_date - DateTime
|
Next invoice date |
last_payment_date - DateTime
|
Last payment date |
credit_expiry_date - DateTime
|
Credit expiry date for device locking |
loan_status - LoanAccountStatusEnum!
|
Loan account status. Default = NEW_ACTIVE |
payment_type - LoanPaymentTypeEnum
|
Payment type |
payment_id - String
|
Payment ID reference |
description - String
|
Transaction description |
metadata - JSON
|
Additional metadata |
Example
{
"contract_id": "abc123",
"transaction_date": "2007-12-03T10:15:30Z",
"transaction_type": "PAYMENT",
"transaction_status": "RECONCILED",
"debit_credit": "DEBIT",
"balance_due": 987.65,
"amount_paid": 987.65,
"arrears_amount": 123.45,
"advance_amount": 987.65,
"next_due_amount": 987.65,
"past_due": 123.45,
"days_past_due": 123.45,
"loan_age_days": 123.45,
"repayment_due": 987.65,
"days_since_last_payment": 987.65,
"next_invoice_date": "2007-12-03T10:15:30Z",
"last_payment_date": "2007-12-03T10:15:30Z",
"credit_expiry_date": "2007-12-03T10:15:30Z",
"loan_status": "NEW_ACTIVE",
"payment_type": "ADJUSTMENT",
"payment_id": "abc123",
"description": "abc123",
"metadata": {}
}
CreateLoanOverrideInput
Fields
| Input Field | Description |
|---|---|
loan_id - String!
|
Loan ID associated with this override |
field_name - String!
|
Name of the field being overridden |
old_value - String
|
Previous value of the field |
new_value - String!
|
New value for the field |
reason - String
|
Reason for the override |
approved_by - String
|
User who approved the override |
Example
{
"loan_id": "abc123",
"field_name": "xyz789",
"old_value": "xyz789",
"new_value": "abc123",
"reason": "abc123",
"approved_by": "abc123"
}
CreateNoteInput
Fields
| Input Field | Description |
|---|---|
object_type - String
|
|
object_id - ID
|
|
note - String
|
|
visibility_level - VisibilityLevelEnum
|
Example
{
"object_type": "abc123",
"object_id": 4,
"note": "xyz789",
"visibility_level": "PUBLIC"
}
CreateOfflineAgentInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput!
|
|
assigned_shop_id - String!
|
|
assigned_sfm_id - String
|
|
assigned_trainer_id - String
|
|
whatsapp_number - String
|
Example
{
"user": UserRefInput,
"assigned_shop_id": "abc123",
"assigned_sfm_id": "xyz789",
"assigned_trainer_id": "abc123",
"whatsapp_number": "abc123"
}
CreateOnlineAgentInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput!
|
|
referral_source - String
|
|
super_agent_id - String
|
|
assigned_sfm_id - String
|
|
whatsapp_number - String
|
Example
{
"user": UserRefInput,
"referral_source": "xyz789",
"super_agent_id": "xyz789",
"assigned_sfm_id": "xyz789",
"whatsapp_number": "xyz789"
}
CreateOrUpdatePlatformSellerCatalogInput
Fields
| Input Field | Description |
|---|---|
sku_id - String!
|
SKU ID |
cost_price - Float
|
Seller cost price |
min_seller_price - Float
|
Minimum seller price |
max_seller_price - Float
|
Maximum seller price |
currency - String
|
Currency code |
stock_on_hand - Int
|
Stock quantity on hand |
reserved_stock - Int
|
Reserved stock quantity |
is_active - Boolean
|
Is listing active? |
Example
{
"sku_id": "abc123",
"cost_price": 123.45,
"min_seller_price": 987.65,
"max_seller_price": 123.45,
"currency": "abc123",
"stock_on_hand": 123,
"reserved_stock": 123,
"is_active": false
}
CreateOrderInput
Fields
| Input Field | Description |
|---|---|
customer_id - ID!
|
|
order_status - OrderStatusEnum!
|
|
payment_status - SalePaymentStatusEnum!
|
|
shipping_address - ShippingAddressInput
|
|
currency - CurrencyEnum
|
|
sub_total - Float!
|
|
total_discount - Float!
|
|
delivery_fee - Float!
|
|
service_fee - Float!
|
|
tax_amount - Float!
|
|
total_amount - Float!
|
|
application_id - String
|
|
sale_agent_id - String
|
|
submitting_agent_id - String
|
|
manual_override - Boolean!
|
|
order_date - DateTime
|
|
metadata - JSON
|
Example
{
"customer_id": 4,
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddressInput,
"currency": "KES",
"sub_total": 987.65,
"total_discount": 123.45,
"delivery_fee": 123.45,
"service_fee": 987.65,
"tax_amount": 123.45,
"total_amount": 123.45,
"application_id": "xyz789",
"sale_agent_id": "abc123",
"submitting_agent_id": "abc123",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"metadata": {}
}
CreateOrderItemInput
Example
{
"order_id": 4,
"seller_id": 4,
"item_type": "PRODUCT",
"catalog_id": "4",
"quantity": 987.65,
"unit_price": 123.45,
"discount_amount": 123.45,
"adjustments": {},
"subtotal": 123.45,
"purchase_type": "CASH",
"status": "xyz789",
"metadata": {}
}
CreatePartnerOwnerInput
Fields
| Input Field | Description |
|---|---|
primary_contact - PartnerContactPersonInput!
|
|
organization - CreateSimpleOrganizationInput
|
|
assigned_sfm_id - String
|
|
location_details - LocationDetailsInput
|
|
partner_track - PartnerTrackEnum!
|
|
whatsapp_number - String
|
|
can_sell - Boolean
|
Example
{
"primary_contact": PartnerContactPersonInput,
"organization": CreateSimpleOrganizationInput,
"assigned_sfm_id": "abc123",
"location_details": LocationDetailsInput,
"partner_track": "SALES",
"whatsapp_number": "xyz789",
"can_sell": true
}
CreatePartnerProfileInput
Fields
| Input Field | Description |
|---|---|
channel_type - ChannelTypeEnum!
|
|
channel_category - ChannelCategoryEnum!
|
|
partner_track - PartnerTrackEnum!
|
|
entity_type - EntityTypeEnum!
|
|
is_owner - Boolean
|
|
shop_manager_id - String
|
|
platform_owner - Boolean
|
|
is_deleted - Boolean
|
|
staff_user_ids - [String!]
|
|
reports_to_id - String
|
|
hierarchy_depth - Int
|
|
hierarchy_path - [String!]
|
|
downline_partner_ids - [String!]
|
|
whatsapp_number - String
|
|
secondary_number - String
|
|
location_details - LocationDetailsInput
|
|
partner_status - PartnerStatusEnum
|
|
assignment_status - AssignmentStatusEnum
|
|
kyc_status - KYCStatusEnum
|
|
training_status - TrainingStatusEnum
|
|
current_cohort_id - String
|
|
assigned_trainer_id - String
|
|
assigned_sfm_id - String
|
|
assigned_promoter_id - String
|
|
graduation_date - DateTime
|
|
cohort_history - [CohortEnrollmentInput!]
|
|
assigned_shop_id - String
|
|
shop_based - Boolean
|
|
outlets - [RetailerOutletInput!]
|
|
shop_metadata - StaticShopMetadataInput
|
|
kyc_metadata - KYCMetadataInput
|
|
activation_date - DateTime
|
|
reactivation_date - DateTime
|
|
deactivation_date - DateTime
|
|
created_by - String
|
|
agent_profile_id - String
|
|
seller_id - String
|
Example
{
"channel_type": "ONLINE_AGENT",
"channel_category": "IN_HOUSE",
"partner_track": "SALES",
"entity_type": "INDIVIDUAL",
"is_owner": true,
"shop_manager_id": "abc123",
"platform_owner": true,
"is_deleted": false,
"staff_user_ids": ["xyz789"],
"reports_to_id": "abc123",
"hierarchy_depth": 987,
"hierarchy_path": ["abc123"],
"downline_partner_ids": ["xyz789"],
"whatsapp_number": "xyz789",
"secondary_number": "abc123",
"location_details": LocationDetailsInput,
"partner_status": "PROSPECT",
"assignment_status": "UNASSIGNED",
"kyc_status": "NOT_SUBMITTED",
"training_status": "NOT_REQUIRED",
"current_cohort_id": "abc123",
"assigned_trainer_id": "abc123",
"assigned_sfm_id": "abc123",
"assigned_promoter_id": "xyz789",
"graduation_date": "2007-12-03T10:15:30Z",
"cohort_history": [CohortEnrollmentInput],
"assigned_shop_id": "xyz789",
"shop_based": false,
"outlets": [RetailerOutletInput],
"shop_metadata": StaticShopMetadataInput,
"kyc_metadata": KYCMetadataInput,
"activation_date": "2007-12-03T10:15:30Z",
"reactivation_date": "2007-12-03T10:15:30Z",
"deactivation_date": "2007-12-03T10:15:30Z",
"created_by": "abc123",
"agent_profile_id": "abc123",
"seller_id": "xyz789"
}
CreatePartnerPromoterInput
Example
{
"user": UserRefInput,
"employee_id": "abc123",
"assigned_territories": ["abc123"],
"assigned_promoter_partners": ["abc123"],
"reports_to_id": "xyz789",
"passport_photo": Upload
}
CreatePartnerShopAttendantInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput!
|
|
owner_partner_profile_id - String!
|
|
whatsapp_number - String
|
Example
{
"user": UserRefInput,
"owner_partner_profile_id": "abc123",
"whatsapp_number": "abc123"
}
CreatePaymentAdjustmentInput
Fields
| Input Field | Description |
|---|---|
adjustment_amount - Float!
|
Adjustment amount (decimal precision 2) |
adjustment_currency - CurrencyEnum
|
|
customer_id - ID!
|
Target Customer ID |
payment_id - ID
|
Reference to the original payment transaction |
related_adjustment_id - ID
|
ID of related adjustment for splits |
adjustment_reason - AdjustmentReasonEnum!
|
|
adjustment_type - AdjustmentTypeEnum!
|
|
adjustment_status - AdjustmentStatusEnum
|
|
posting_type - PostingTypeEnum
|
|
posting_tag - PostingTagEnum
|
|
dr_cr - DrCrEnum!
|
|
original_contract_number - String
|
|
new_contract_number - String
|
|
adjustment_note - String
|
|
loan_id - String
|
Business loan id (raw_loan_contract.loan_id) for audit/display. Reconciliation prioritization is driven by adjustment_metadata.contract_id, which the bulk importer resolves and sets from this value. |
adjustment_metadata - JSON
|
Example
{
"adjustment_amount": 123.45,
"adjustment_currency": "KES",
"customer_id": 4,
"payment_id": "4",
"related_adjustment_id": 4,
"adjustment_reason": "DEPOSIT",
"adjustment_type": "REFUND",
"adjustment_status": "EFFECTED",
"posting_type": "ADJUSTMENT_POST",
"posting_tag": "STAFF_SALE_DISCOUNT",
"dr_cr": "DR",
"original_contract_number": "xyz789",
"new_contract_number": "abc123",
"adjustment_note": "abc123",
"loan_id": "abc123",
"adjustment_metadata": {}
}
CreatePaymentAllocationInput
Fields
| Input Field | Description |
|---|---|
payment_id - String!
|
Payment ID that is being allocated |
sale_id - String!
|
Sale ID for primary anchor linking |
installment_id - String
|
Installment ID receiving the allocation |
contract_id - String
|
Contract ID for reference |
allocated_amount - Float!
|
Total amount allocated from payment |
principal_allocated - Float!
|
Amount allocated to principal |
interest_allocated - Float!
|
Amount allocated to interest |
penalty_allocated - Float!
|
Amount allocated to penalty. Default = 0 |
allocation_order - Float!
|
Order of allocation for this payment |
metadata - JSON
|
Additional metadata |
Example
{
"payment_id": "abc123",
"sale_id": "xyz789",
"installment_id": "xyz789",
"contract_id": "xyz789",
"allocated_amount": 123.45,
"principal_allocated": 987.65,
"interest_allocated": 123.45,
"penalty_allocated": 987.65,
"allocation_order": 987.65,
"metadata": {}
}
CreatePaymentInput
Fields
| Input Field | Description |
|---|---|
customer_id - String
|
|
wallet_id - String
|
|
payment_provider - PaymentProviderEnum!
|
|
payment_provider_reference - String!
|
|
payment_account_reference - String
|
|
payment_type - PaymentTypeEnum!
|
|
payment_amount - Float!
|
|
payment_currency - CurrencyEnum!
|
|
payment_channel - PaymentChannelEnum!
|
|
payment_transaction_date - DateTime!
|
|
payment_phone_number - String
|
|
payment_description - String
|
|
payment_raw - JSON
|
Example
{
"customer_id": "abc123",
"wallet_id": "abc123",
"payment_provider": "MPESA",
"payment_provider_reference": "xyz789",
"payment_account_reference": "xyz789",
"payment_type": "PAYMENT",
"payment_amount": 123.45,
"payment_currency": "KES",
"payment_channel": "USSD",
"payment_transaction_date": "2007-12-03T10:15:30Z",
"payment_phone_number": "xyz789",
"payment_description": "abc123",
"payment_raw": {}
}
CreatePricePlanInput
Fields
| Input Field | Description |
|---|---|
tier_id - String
|
|
code - String!
|
|
name - String!
|
|
min_device_value - Float!
|
|
max_device_value - Float
|
|
deposit_percent - Float!
|
|
subsequent_loan_discount_percent - Float
|
|
deposit_percent_high - Float
|
|
loan_multiplier - Float!
|
|
loan_multiplier_high - Float
|
|
mocare_percent - Float
|
|
duration_months - Int!
|
|
duration_months_high - Int
|
|
payment_frequency - PaymentFrequencyEnum
|
|
effective_from - String
|
|
effective_to - String
|
|
early_payoff_discounts - [EarlyPayoffDiscountInput!]
|
|
status - PricePlanStatusEnum
|
|
is_private - Boolean
|
|
metadata - JSON
|
Example
{
"tier_id": "xyz789",
"code": "abc123",
"name": "xyz789",
"min_device_value": 987.65,
"max_device_value": 987.65,
"deposit_percent": 123.45,
"subsequent_loan_discount_percent": 123.45,
"deposit_percent_high": 123.45,
"loan_multiplier": 987.65,
"loan_multiplier_high": 123.45,
"mocare_percent": 123.45,
"duration_months": 987,
"duration_months_high": 123,
"payment_frequency": "DAILY",
"effective_from": "xyz789",
"effective_to": "abc123",
"early_payoff_discounts": [EarlyPayoffDiscountInput],
"status": "ACTIVE",
"is_private": true,
"metadata": {}
}
CreateProductInput
Fields
| Input Field | Description |
|---|---|
name - String!
|
Product name |
slug - String!
|
URL-friendly name |
brand - String!
|
Product brand |
model - String!
|
Product model |
category_id - String!
|
Category ID |
description - String
|
Short description |
long_description - String
|
Detailed description |
base_specifications - JSON
|
Product specifications |
primary_image_url - String
|
Primary product image URL |
images - [String!]
|
Additional product images |
video_url - String
|
Product video URL |
meta_title - String
|
SEO title |
meta_description - String
|
SEO description |
keywords - [String!]
|
SEO keywords |
is_active - Boolean
|
Is product active? |
approval_status - ProductApprovalStatusEnum
|
Approval status |
submitted_by_seller_id - String
|
Seller who submitted it |
approved_by - String
|
Who approved it |
rejection_reason - String
|
Rejection reason |
Example
{
"name": "abc123",
"slug": "abc123",
"brand": "xyz789",
"model": "abc123",
"category_id": "abc123",
"description": "abc123",
"long_description": "xyz789",
"base_specifications": {},
"primary_image_url": "abc123",
"images": ["xyz789"],
"video_url": "xyz789",
"meta_title": "abc123",
"meta_description": "abc123",
"keywords": ["xyz789"],
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "xyz789",
"rejection_reason": "xyz789"
}
CreateProductOfferInput
Fields
| Input Field | Description |
|---|---|
status - OfferStatusEnum!
|
Offer status |
type - OfferTypeEnum!
|
Offer type |
discount_value - Float
|
Discount value |
minimum_purchase_amount - Float
|
Minimum purchase amount |
maximum_discount_amount - Float
|
Maximum discount amount |
usage_limit - Int
|
Usage limit |
usage_count - Int
|
Usage count |
usage_limit_per_customer - Int
|
Usage limit per customer |
promo_code - String
|
Promo code |
category_filters - [String!]!
|
Category filters |
brand_filters - [String!]!
|
Brand filters |
applicable_channels - [String!]
|
Applicable channels |
active - Boolean
|
Is offer active? |
starts_at - DateTime!
|
Offer start date |
ends_at - DateTime!
|
Offer end date |
seller_id - String
|
Associated seller ID |
sku_id - String
|
Associated SKU ID |
Example
{
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 123.45,
"minimum_purchase_amount": 123.45,
"maximum_discount_amount": 123.45,
"usage_limit": 123,
"usage_count": 987,
"usage_limit_per_customer": 123,
"promo_code": "abc123",
"category_filters": ["abc123"],
"brand_filters": ["xyz789"],
"applicable_channels": ["abc123"],
"active": true,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "abc123",
"sku_id": "abc123"
}
CreateRawCustomerWalletsInput
Fields
| Input Field | Description |
|---|---|
customer_id - String!
|
Customer ID this wallet belongs to |
customer_wallet_available_balance - Float
|
Unallocated funds available in wallet |
customer_wallet_total_payments - Float
|
All payments received |
customer_wallet_total_adjustments - Float
|
Refunds, bonuses, penalties |
customer_wallet_total_days_given - Float
|
Grace days granted to customer |
customer_wallet_total_points - Float
|
Loyalty/reward points earned |
customer_wallet_total_allocated - Float
|
Money allocated to sales |
customer_wallet_lifetime_credits - Float
|
All money in (lifetime credits) |
customer_wallet_lifetime_debits - Float
|
All money out (lifetime debits) |
customer_wallet_currency - CurrencyEnum
|
Wallet currency |
Example
{
"customer_id": "xyz789",
"customer_wallet_available_balance": 123.45,
"customer_wallet_total_payments": 987.65,
"customer_wallet_total_adjustments": 987.65,
"customer_wallet_total_days_given": 987.65,
"customer_wallet_total_points": 123.45,
"customer_wallet_total_allocated": 987.65,
"customer_wallet_lifetime_credits": 123.45,
"customer_wallet_lifetime_debits": 123.45,
"customer_wallet_currency": "KES"
}
CreateRawCustomersInput
Fields
| Input Field | Description |
|---|---|
customer_type - CustomerTypeEnum!
|
|
customer_phone_number - String!
|
|
official_id_number - String!
|
|
country - String
|
ISO 3166-1 alpha-2 country code e.g. KE |
county - String
|
|
sub_county - String
|
|
ward - String
|
|
town - String
|
|
customer_email_address - String
|
|
customer_status - CustomerStatusEnum!
|
|
customer_first_name - String
|
|
customer_surname_name - String
|
|
individual_details - IndividualDetailsInput
|
|
organization_name - String
|
|
organization_registration_number - String
|
|
organization_details - OrganizationDetailsInput
|
|
contact_person - ContactPersonInput
|
|
total_loans_taken - Int
|
|
active_loans_count - Int
|
|
completed_loans_count - Int
|
|
has_defaulted - Boolean
|
|
current_credit_score - String
|
|
metadata - JSONObject
|
|
kyc_documents - KycDocumentsInput
|
|
next_of_kin - NextOfKinInput
|
|
referral_code - String
|
Example
{
"customer_type": "INDIVIDUAL",
"customer_phone_number": "xyz789",
"official_id_number": "xyz789",
"country": "xyz789",
"county": "xyz789",
"sub_county": "xyz789",
"ward": "abc123",
"town": "abc123",
"customer_email_address": "abc123",
"customer_status": "ACTIVE",
"customer_first_name": "abc123",
"customer_surname_name": "abc123",
"individual_details": IndividualDetailsInput,
"organization_name": "xyz789",
"organization_registration_number": "abc123",
"organization_details": OrganizationDetailsInput,
"contact_person": ContactPersonInput,
"total_loans_taken": 987,
"active_loans_count": 123,
"completed_loans_count": 987,
"has_defaulted": true,
"current_credit_score": "xyz789",
"metadata": {},
"kyc_documents": KycDocumentsInput,
"next_of_kin": NextOfKinInput,
"referral_code": "xyz789"
}
CreateRawPaymentInput
Fields
| Input Field | Description |
|---|---|
customer_id - String
|
Customer ID |
wallet_id - String
|
Wallet ID |
payment_provider - PaymentProviderEnum!
|
Payment service provider |
payment_provider_reference - String!
|
PSP unique transaction reference (required as per unique index) |
payment_account_reference - String
|
Optional business/account reference used during payment |
payment_type - PaymentTypeEnum!
|
Payment type (e.g., PAYMENT, REFUND, CHARGEBACK) |
payment_amount - Float!
|
Payment amount (decimal precision 15,2) |
payment_currency - CurrencyEnum
|
Payment currency (Defaults to KES) |
payment_channel - PaymentChannelEnum!
|
Payment channel (e.g., APP, USSD, WEB) |
payment_status - PaymentStatusEnum
|
Payment status (Defaults to PENDING) |
payment_reconciliation_status - PaymentReconciliationStatusEnum
|
Reconciliation status (Defaults to NOT_MATCHED) |
payment_transaction_date - String
|
The date the transaction occurred |
payment_settled_at - String
|
Payment settlement ISO timestamp |
payment_phone_number - String
|
The originating phone number (e.g. MSISDN) |
payment_description - String
|
Optional payment description |
payment_raw - JSON
|
Full PSP payload or import row data (jsonb) |
Example
{
"customer_id": "xyz789",
"wallet_id": "abc123",
"payment_provider": "MPESA",
"payment_provider_reference": "xyz789",
"payment_account_reference": "abc123",
"payment_type": "PAYMENT",
"payment_amount": 123.45,
"payment_currency": "KES",
"payment_channel": "USSD",
"payment_status": "PENDING",
"payment_reconciliation_status": "PENDING",
"payment_transaction_date": "xyz789",
"payment_settled_at": "xyz789",
"payment_phone_number": "xyz789",
"payment_description": "xyz789",
"payment_raw": {}
}
CreateRawRiskInput
Fields
| Input Field | Description |
|---|---|
block_type - RiskBlockTypeEnum!
|
|
blocked_value - String
|
|
customer_id - String
|
|
primary_id - String
|
|
primary_phone - String
|
|
phone_numbers - [String!]
|
|
associated_phone_numbers - [String!]
|
|
associated_ids - [String!]
|
|
reason - String!
|
|
description - String
|
|
severity - RiskSeverityEnum!
|
|
restricted_actions - [RiskRestrictedActionEnum!]!
|
|
is_active - Boolean
|
|
effective_from - DateTime
|
|
expires_at - DateTime
|
Example
{
"block_type": "CUSTOMER",
"blocked_value": "abc123",
"customer_id": "xyz789",
"primary_id": "xyz789",
"primary_phone": "xyz789",
"phone_numbers": ["abc123"],
"associated_phone_numbers": ["abc123"],
"associated_ids": ["xyz789"],
"reason": "abc123",
"description": "xyz789",
"severity": "LOW",
"restricted_actions": ["BLOCK_NEW_CUSTOMERS"],
"is_active": false,
"effective_from": "2007-12-03T10:15:30Z",
"expires_at": "2007-12-03T10:15:30Z"
}
CreateRawWalletTransactionsInput
Fields
| Input Field | Description |
|---|---|
wallet_transaction_id - String
|
Unique wallet transaction identifier (auto-generated if not provided) |
wallet_id - String!
|
Wallet ID this transaction belongs to |
customer_id - String!
|
Customer ID this transaction belongs to |
sale_id - String
|
Sale ID for sale-specific transactions (NULL for unallocated) |
wallet_transaction_ref_id - String
|
Reference transaction ID for reversals/transfers |
wallet_transaction_type - WalletTransactionTypeEnum!
|
Type of wallet transaction |
wallet_transaction_sub_type - WalletTransactionSubTypeEnum!
|
Sub-type of wallet transaction |
wallet_transaction_amount - Float!
|
Transaction amount |
wallet_transaction_balance_before - Float!
|
Wallet balance before this transaction |
wallet_transaction_balance_after - Float!
|
Wallet balance after this transaction |
wallet_transaction_days_value - Float
|
Days value for days_given transactions |
wallet_transaction_points_value - Float
|
Points value for points transactions |
wallet_transaction_status - WalletTransactionStatusEnum!
|
Transaction status |
reference - String
|
External reference (M-Pesa code, bank ref, etc) |
wallet_transaction_description - String
|
Human-readable transaction description |
wallet_transaction_metadata - JSON
|
Additional flexible transaction data |
wallet_transaction_completed_at - DateTime
|
Transaction completion timestamp |
Example
{
"wallet_transaction_id": "xyz789",
"wallet_id": "xyz789",
"customer_id": "xyz789",
"sale_id": "abc123",
"wallet_transaction_ref_id": "abc123",
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 987.65,
"wallet_transaction_balance_before": 987.65,
"wallet_transaction_balance_after": 123.45,
"wallet_transaction_days_value": 123.45,
"wallet_transaction_points_value": 987.65,
"wallet_transaction_status": "PENDING",
"reference": "abc123",
"wallet_transaction_description": "abc123",
"wallet_transaction_metadata": {},
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
CreateRefundInput
Description
Create a new refund record
Fields
| Input Field | Description |
|---|---|
customer_id - String!
|
Customer ID |
sale_id - String!
|
Sale ID |
returns_request_id - String!
|
Returns request ID (MongoDB ObjectId) |
refund_amount - Float!
|
Refund amount |
order_id - String
|
Order ID |
loan_contract_id - String
|
Loan contract ID |
source_payment_id - String
|
Source payment ID used for payout adjustment linkage |
refund_workflow_type - RefundWorkflowType
|
Workflow that originated the refund |
adjustment_id - String
|
Linked payment adjustment ID |
refund_method - RefundMethod
|
Refund method |
notes - String
|
Notes |
Example
{
"customer_id": "abc123",
"sale_id": "xyz789",
"returns_request_id": "abc123",
"refund_amount": 123.45,
"order_id": "xyz789",
"loan_contract_id": "xyz789",
"source_payment_id": "xyz789",
"refund_workflow_type": "RETURN",
"adjustment_id": "xyz789",
"refund_method": "MPESA",
"notes": "abc123"
}
CreateRepairInput
Fields
| Input Field | Description |
|---|---|
repair_display_id - String
|
Custom repair display ID (auto-generated if not provided) |
requires_technician - Boolean
|
Requires technician? |
inventory_id - String
|
Inventory item ID |
customer_id - String!
|
Customer ID |
original_sale_id - String
|
Original sale ID |
provider_seller_id - String!
|
Repair provider seller ID |
location_status - RepairLocationStatusEnum!
|
Location status |
status - RepairStatusEnum
|
Repair status |
priority - RepairPriorityEnum
|
Repair priority level |
is_left_at_shop - Boolean
|
Is device left at shop? |
intake_details - JSON!
|
Intake details |
outtake_details - JSON!
|
Outtake details |
security - JSON!
|
Security details |
issue_tag - String!
|
Issue tag |
customer_complaint - String!
|
Customer complaint description |
hq_diagnostic_notes - String
|
HQ diagnostic notes |
billing_type - RepairBillingTypeEnum!
|
Billing type |
quoted_price - Float!
|
Quoted price |
spares_cost - Float!
|
Spares cost |
Example
{
"repair_display_id": "xyz789",
"requires_technician": false,
"inventory_id": "xyz789",
"customer_id": "xyz789",
"original_sale_id": "abc123",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "xyz789",
"customer_complaint": "abc123",
"hq_diagnostic_notes": "abc123",
"billing_type": "WARRANTY",
"quoted_price": 123.45,
"spares_cost": 987.65
}
CreateRepossessionRequestInput
Fields
| Input Field | Description |
|---|---|
customer_id - String!
|
Customer ID |
sale_id - String!
|
Sale ID |
ticket_id - String!
|
Linked support ticket ID or URL |
return_policy - ReturnPolicy!
|
Return policy selected at intake |
customer_notes - String
|
Notes from customer |
return_reason - ReturnReason!
|
Return reason |
refund_applicable - Boolean!
|
Whether a refund will be issued |
ops_notes - String
|
OPS notes captured at intake |
cxc_notes - String
|
CXC notes captured at intake |
intake_return_type_label - String
|
OPS matrix return type label when it differs from backend request_type |
submitted_by - String
|
Staff ID submitting the request (fallback when not authenticated) |
Example
{
"customer_id": "xyz789",
"sale_id": "abc123",
"ticket_id": "abc123",
"return_policy": "WITHIN_POLICY",
"customer_notes": "xyz789",
"return_reason": "FUNCTIONAL_ISSUES",
"refund_applicable": false,
"ops_notes": "abc123",
"cxc_notes": "xyz789",
"intake_return_type_label": "xyz789",
"submitted_by": "abc123"
}
CreateRetailOutletStaffInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput!
|
|
employment_type - EmploymentTypeEnum
|
|
employee_id - String
|
|
assigned_outlet_id - String!
|
|
owner_partner_profile_id - String!
|
|
reports_to_id - String
|
|
passport_photo - Upload
|
Example
{
"user": UserRefInput,
"employment_type": "FULL_TIME",
"employee_id": "abc123",
"assigned_outlet_id": "abc123",
"owner_partner_profile_id": "abc123",
"reports_to_id": "abc123",
"passport_photo": Upload
}
CreateRetailerOrganizationInput
Fields
| Input Field | Description |
|---|---|
primary_contact - PartnerContactPersonInput!
|
|
organization - CreateSimpleOrganizationInput
|
|
assigned_sfm_id - String
|
|
location_details - LocationDetailsInput
|
Example
{
"primary_contact": PartnerContactPersonInput,
"organization": CreateSimpleOrganizationInput,
"assigned_sfm_id": "abc123",
"location_details": LocationDetailsInput
}
CreateRetailerOutletInput
Fields
| Input Field | Description |
|---|---|
retailer_organization_id - String!
|
|
outlet_name - String!
|
|
location - LocationDetailsInput!
|
Example
{
"retailer_organization_id": "abc123",
"outlet_name": "xyz789",
"location": LocationDetailsInput
}
CreateReturnRequestInput
Fields
| Input Field | Description |
|---|---|
customer_id - String!
|
Customer ID |
sale_id - String!
|
Sale ID |
ticket_id - String!
|
Linked support ticket ID or URL |
return_policy - ReturnPolicy!
|
Return policy selected at intake |
return_reason - ReturnReason!
|
Return reason |
refund_applicable - Boolean!
|
Whether a refund will be issued |
customer_notes - String
|
Notes from customer |
ops_notes - String
|
OPS notes captured at intake |
cxc_notes - String
|
CXC notes captured at intake |
intake_return_type_label - String
|
OPS matrix return type label when it differs from backend request_type |
submitted_by - String
|
Staff ID submitting the request (fallback when not authenticated) |
mpesa_arrears_clearance_reference - String
|
Optional M-Pesa confirmation code for audit when customer cleared arrears before intake |
Example
{
"customer_id": "abc123",
"sale_id": "abc123",
"ticket_id": "abc123",
"return_policy": "WITHIN_POLICY",
"return_reason": "FUNCTIONAL_ISSUES",
"refund_applicable": false,
"customer_notes": "xyz789",
"ops_notes": "xyz789",
"cxc_notes": "abc123",
"intake_return_type_label": "abc123",
"submitted_by": "xyz789",
"mpesa_arrears_clearance_reference": "abc123"
}
CreateRoleInput
Fields
| Input Field | Description |
|---|---|
name - String!
|
|
level - Int!
|
|
permissions - [String!]!
|
|
description - String
|
|
canManage - [String!]!
|
|
realm - String
|
Example
{
"name": "abc123",
"level": 987,
"permissions": ["xyz789"],
"description": "abc123",
"canManage": ["abc123"],
"realm": "xyz789"
}
CreateSFMInput
Example
{
"user": UserRefInput,
"employee_id": "abc123",
"assigned_territories": ["xyz789"],
"assigned_region": "xyz789",
"assigned_sfm_partners": ["xyz789"],
"reports_to_id": "abc123",
"passport_photo": Upload
}
CreateSalesInput
Fields
| Input Field | Description |
|---|---|
sale_date - DateTime
|
|
order_id - ID!
|
|
customer_id - ID!
|
|
inventory_id - ID!
|
|
sale_agent_id - ID!
|
|
submitting_agent_id - ID!
|
|
sfm_id - ID!
|
|
price_plan_id - ID
|
|
metadata - JSON
|
|
payment_type - SalesPaymentTypeEnum!
|
|
payment_status - SalePaymentStatusEnum!
|
|
normal_high_deposit - NormalHighDepositEnum
|
|
final_sale_price - Float!
|
|
invoice_number - String
|
|
status - SaleLifecycleStatusEnum
|
|
return_date - DateTime
|
Example
{
"sale_date": "2007-12-03T10:15:30Z",
"order_id": "4",
"customer_id": 4,
"inventory_id": "4",
"sale_agent_id": "4",
"submitting_agent_id": "4",
"sfm_id": "4",
"price_plan_id": 4,
"metadata": {},
"payment_type": "REPAIR",
"payment_status": "UNPAID",
"normal_high_deposit": "NORMAL",
"final_sale_price": 123.45,
"invoice_number": "xyz789",
"status": "ACTIVE",
"return_date": "2007-12-03T10:15:30Z"
}
CreateSellerCatalogInput
Fields
| Input Field | Description |
|---|---|
seller_id - String!
|
Seller ID |
sku_id - String!
|
SKU ID |
cost_price - Float
|
Seller cost price |
retail_price - Float!
|
Retail price |
currency - String
|
Currency code |
stock_on_hand - Int
|
Stock quantity on hand |
reserved_stock - Int
|
Reserved stock quantity |
is_active - Boolean
|
Is listing active? |
Example
{
"seller_id": "xyz789",
"sku_id": "abc123",
"cost_price": 123.45,
"retail_price": 987.65,
"currency": "abc123",
"stock_on_hand": 987,
"reserved_stock": 987,
"is_active": true
}
CreateSellerInput
Fields
| Input Field | Description |
|---|---|
partner_profile_id - String
|
Partner profile ID |
commission_type_id - String
|
Commission type |
tier_id - String
|
Seller tier |
seller_type - SellerTypeEnum!
|
Type of seller |
payment_details - JSON
|
Payment details |
capabilities - JSON
|
Seller capabilities |
performance_metrics - JSON!
|
Performance metrics |
overall_rating - Float
|
Overall rating (0-5) |
total_reviews - Int
|
Total number of reviews |
total_sales - Int
|
Total sales count |
total_orders_365_days - Int
|
Orders in last 365 days |
badges - [String!]
|
Achievement badges |
suspension_reason - String
|
Reason for suspension |
approved_by - String
|
Who approved the seller |
platform_owner - Boolean
|
Platform oner |
Example
{
"partner_profile_id": "abc123",
"commission_type_id": "abc123",
"tier_id": "abc123",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 123.45,
"total_reviews": 123,
"total_sales": 123,
"total_orders_365_days": 123,
"badges": ["abc123"],
"suspension_reason": "abc123",
"approved_by": "xyz789",
"platform_owner": true
}
CreateSellerTierInput
CreateShopAttendantInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput
|
|
owner_partner_profile_id - String!
|
|
employee_id - String
|
|
passport_photo - Upload
|
Example
{
"user": UserRefInput,
"owner_partner_profile_id": "xyz789",
"employee_id": "xyz789",
"passport_photo": Upload
}
CreateShopManagerInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput!
|
|
employee_id - String
|
|
assigned_shop_id - String
|
|
reports_to_id - String
|
|
passport_photo - Upload
|
Example
{
"user": UserRefInput,
"employee_id": "abc123",
"assigned_shop_id": "abc123",
"reports_to_id": "xyz789",
"passport_photo": Upload
}
CreateShopOwnerInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput
|
|
shop_name - String
|
|
assigned_sfm_id - String
|
|
shop_manager_id - String
|
|
whatsapp_number - String
|
|
phone_number - String
|
|
location - LocationDetailsInput
|
Example
{
"user": UserRefInput,
"shop_name": "xyz789",
"assigned_sfm_id": "xyz789",
"shop_manager_id": "abc123",
"whatsapp_number": "abc123",
"phone_number": "xyz789",
"location": LocationDetailsInput
}
CreateSimpleOrganizationInput
CreateSimpleUserInput
Example
{
"email": "abc123",
"job_title": "abc123",
"first_name": "xyz789",
"surname": "xyz789",
"last_name": "abc123",
"phone_number": "abc123",
"keycloak_id": "xyz789"
}
CreateSkuAgentWhitelistInput
Fields
| Input Field | Description |
|---|---|
sku_id - String!
|
|
agent_id - ID
|
|
agent_type - AgentTypeEnum
|
|
is_active - Boolean
|
Example
{
"sku_id": "xyz789",
"agent_id": "4",
"agent_type": "SFM",
"is_active": false
}
CreateSkuChildInput
Fields
| Input Field | Description |
|---|---|
condition_id - String
|
Condition ID |
name - String!
|
SKU display name |
attributes - JSON!
|
SKU attributes |
level_attribute_key - String
|
Hierarchy attribute key for the child level |
level_attribute_value - String
|
Hierarchy attribute value for the child level |
variant_specifications - JSON
|
Variant specifications |
msrp_price - Float
|
Original retail price |
min_seller_price - Float
|
Minimum seller price |
max_seller_price - Float
|
Maximum seller price |
suggested_retail_price - Float
|
Suggested retail price override |
weight_grams - Int
|
Weight in grams |
dimensions_mm - String
|
Dimensions in mm |
is_active - Boolean
|
Is SKU active? |
approval_status - ProductApprovalStatusEnum
|
Approval status |
Example
{
"condition_id": "abc123",
"name": "xyz789",
"attributes": {},
"level_attribute_key": "xyz789",
"level_attribute_value": "abc123",
"variant_specifications": {},
"msrp_price": 987.65,
"min_seller_price": 123.45,
"max_seller_price": 123.45,
"suggested_retail_price": 987.65,
"weight_grams": 987,
"dimensions_mm": "xyz789",
"is_active": false,
"approval_status": "APPROVED"
}
CreateSkuInput
Fields
| Input Field | Description |
|---|---|
product_id - String!
|
Product ID |
condition_id - String
|
Condition ID |
parent_sku_id - String
|
Parent SKU ID |
level - Int
|
Hierarchy level. Defaults to 1 for roots. |
level_attribute_key - String
|
Hierarchy attribute key for this level |
level_attribute_value - String
|
Hierarchy attribute value for this level |
sku_code - String
|
Unique SKU code |
name - String!
|
SKU name |
attributes - JSON!
|
SKU attributes |
variant_specifications - JSON
|
Variant specifications |
msrp_price - Float
|
Original retail price |
min_seller_price - Float
|
Minimum seller price |
max_seller_price - Float
|
Maximum seller price |
suggested_retail_price - Float
|
Suggested retail price |
images - [String!]
|
SKU images |
weight_grams - Int
|
Weight in grams |
dimensions_mm - String
|
Dimensions in mm |
is_active - Boolean
|
Is SKU active? |
approval_status - ProductApprovalStatusEnum
|
Approval status |
submitted_by_seller_id - String
|
Seller who submitted it |
approved_by - String
|
Who approved it |
rejection_reason - String
|
Rejection reason |
Example
{
"product_id": "abc123",
"condition_id": "abc123",
"parent_sku_id": "abc123",
"level": 123,
"level_attribute_key": "abc123",
"level_attribute_value": "xyz789",
"sku_code": "xyz789",
"name": "abc123",
"attributes": {},
"variant_specifications": {},
"msrp_price": 987.65,
"min_seller_price": 987.65,
"max_seller_price": 987.65,
"suggested_retail_price": 123.45,
"images": ["abc123"],
"weight_grams": 987,
"dimensions_mm": "xyz789",
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "abc123",
"approved_by": "abc123",
"rejection_reason": "xyz789"
}
CreateSubsequentLoanInput
Fields
| Input Field | Description |
|---|---|
customerId - String!
|
Customer UUID or official ID number |
sellerCatalogId - String
|
Seller catalog ID for the new application |
salesAgentId - String
|
Sales agent responsible for the application |
applicationChannel - ApplicationChannelEnum
|
Channel through which the application is created |
loanProductId - String
|
Loan product ID (raw_loan_products) for the new application |
productCashPrice - Float
|
Cash price of the product for the new application |
skipOtpConsent - Boolean
|
When true, skip OTP consent and advance directly to credit call. Default = false |
Example
{
"customerId": "abc123",
"sellerCatalogId": "abc123",
"salesAgentId": "abc123",
"applicationChannel": "SALES_APP",
"loanProductId": "xyz789",
"productCashPrice": 123.45,
"skipOtpConsent": false
}
CreateSuperAgentInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput!
|
|
referral_source - String
|
|
assigned_sfm_id - String
|
|
whatsapp_number - String
|
|
referral_code - String
|
Example
{
"user": UserRefInput,
"referral_source": "xyz789",
"assigned_sfm_id": "abc123",
"whatsapp_number": "xyz789",
"referral_code": "abc123"
}
CreateSwapRequestInput
Fields
| Input Field | Description |
|---|---|
customer_id - String!
|
Customer ID |
sale_id - String!
|
Sale ID |
ticket_id - String!
|
Linked support ticket ID or URL |
return_policy - ReturnPolicy!
|
Return policy selected at intake |
return_reason - ReturnReason!
|
Return reason |
customer_notes - String
|
Notes from customer |
ops_notes - String
|
OPS notes captured at intake |
cxc_notes - String
|
CXC notes captured at intake |
intake_return_type_label - String
|
OPS matrix return type label when it differs from backend request_type |
submitted_by - String
|
Staff ID submitting the request (fallback when not authenticated) |
no_stock_at_request - Boolean
|
True when the swap was requested while no platform-owner stock was available for the current SKU |
mpesa_arrears_clearance_reference - String
|
Optional M-Pesa confirmation code for audit when customer cleared arrears before intake |
Example
{
"customer_id": "abc123",
"sale_id": "xyz789",
"ticket_id": "abc123",
"return_policy": "WITHIN_POLICY",
"return_reason": "FUNCTIONAL_ISSUES",
"customer_notes": "xyz789",
"ops_notes": "abc123",
"cxc_notes": "abc123",
"intake_return_type_label": "xyz789",
"submitted_by": "abc123",
"no_stock_at_request": false,
"mpesa_arrears_clearance_reference": "abc123"
}
CreateTelesalesAgentInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput!
|
|
employee_id - String
|
|
reports_to_id - String
|
|
passport_photo - Upload
|
Example
{
"user": UserRefInput,
"employee_id": "abc123",
"reports_to_id": "xyz789",
"passport_photo": Upload
}
CreateTerritoryInput
Example
{
"name": "xyz789",
"description": "abc123",
"level": "COUNTRY",
"ward_ids": ["4"],
"zone_ids": [4],
"region_id": "4",
"created_by": "abc123",
"is_active": true,
"metadata": {}
}
CreateTrainerInput
Fields
| Input Field | Description |
|---|---|
user - UserRefInput!
|
|
employee_id - String
|
|
specializations - [String!]
|
|
reports_to_id - String
|
|
passport_photo - Upload
|
Example
{
"user": UserRefInput,
"employee_id": "xyz789",
"specializations": ["abc123"],
"reports_to_id": "xyz789",
"passport_photo": Upload
}
CreateUpgradeRequestInput
Fields
| Input Field | Description |
|---|---|
customer_id - String!
|
Customer ID(uid) |
sale_id - String!
|
Sale ID |
ticket_id - String!
|
Linked support ticket ID or URL |
return_policy - ReturnPolicy!
|
Return policy selected at intake |
return_reason - ReturnReason!
|
Return reason |
target_device_model - String!
|
SKU — for decisioner context |
new_device_price - Float!
|
New device price in KES (TOTAL LOAN OR CASH PRICE) |
customer_notes - String
|
Notes from customer |
ops_notes - String
|
OPS notes captured at intake |
cxc_notes - String
|
CXC notes captured at intake |
intake_return_type_label - String
|
OPS matrix return type label when it differs from backend request_type |
submitted_by - String
|
Staff ID submitting the request (fallback when not authenticated) |
new_device_deposit - Float!
|
Deposit for the new device in KES |
price_plan - String!
|
Price plan for the new device |
no_stock_at_request - Boolean
|
True when an originating swap had no platform-owner stock and was switched to upgrade |
mpesa_arrears_clearance_reference - String
|
Optional M-Pesa confirmation code for audit when customer cleared arrears before intake |
Example
{
"customer_id": "abc123",
"sale_id": "xyz789",
"ticket_id": "xyz789",
"return_policy": "WITHIN_POLICY",
"return_reason": "FUNCTIONAL_ISSUES",
"target_device_model": "xyz789",
"new_device_price": 123.45,
"customer_notes": "abc123",
"ops_notes": "xyz789",
"cxc_notes": "xyz789",
"intake_return_type_label": "abc123",
"submitted_by": "xyz789",
"new_device_deposit": 987.65,
"price_plan": "abc123",
"no_stock_at_request": false,
"mpesa_arrears_clearance_reference": "xyz789"
}
CreateUserInput
Example
{
"keycloak_id": "abc123",
"username": "xyz789",
"email": "xyz789",
"first_name": "xyz789",
"surname": "xyz789",
"last_name": "xyz789",
"phone_number": "xyz789",
"user_type": "SYSTEM_ADMIN",
"is_internal": true,
"enabled": false,
"role": "xyz789",
"group_memberships": ["xyz789"],
"attributes": {}
}
CreateZoneInput
Example
{
"name": "xyz789",
"ward_id": "4",
"district_id": "4",
"lat": 123.45,
"lng": 123.45,
"radius_km": 123.45,
"polygon": {},
"is_active": true,
"created_by": "xyz789",
"metadata": {}
}
CreditApplicationConfigType
Fields
| Field Name | Description |
|---|---|
mpesaStatementValid - CreditConfigFieldType!
|
|
bankStatementValid - CreditConfigFieldType!
|
|
kraPinValid - CreditConfigFieldType!
|
|
customerIdFrontpageValid - CreditConfigFieldType!
|
|
idWithSelfieValid - CreditConfigFieldType!
|
|
altContactIdValid - CreditConfigFieldType!
|
|
altContactPhoneValid - CreditConfigFieldType!
|
|
customerIdBackpageValid - CreditConfigFieldType!
|
|
mpesaStatementRecentAirtime - CreditConfigFieldType!
|
|
mpesaStatementGapsAnalysis - CreditConfigFieldType!
|
|
crdApproval - CreditConfigFieldType!
|
|
previousLoans - CreditConfigFieldType!
|
|
riskFlags - CreditConfigFieldType!
|
|
creditStatus - CreditConfigFieldType!
|
|
pendingKycChecks - CreditConfigFieldType!
|
|
highDepositOverride - CreditConfigFieldType!
|
|
loanDuration - CreditConfigFieldType!
|
|
pricePlanCreditStatus - CreditConfigFieldType!
|
|
approvalCreditStatus - CreditConfigFieldType!
|
|
depositAndDeliveryCreditStatus - CreditConfigFieldType!
|
|
finalRiskScore - CreditConfigFieldType!
|
|
creditCallStatus - CreditConfigFieldType!
|
Example
{
"mpesaStatementValid": CreditConfigFieldType,
"bankStatementValid": CreditConfigFieldType,
"kraPinValid": CreditConfigFieldType,
"customerIdFrontpageValid": CreditConfigFieldType,
"idWithSelfieValid": CreditConfigFieldType,
"altContactIdValid": CreditConfigFieldType,
"altContactPhoneValid": CreditConfigFieldType,
"customerIdBackpageValid": CreditConfigFieldType,
"mpesaStatementRecentAirtime": CreditConfigFieldType,
"mpesaStatementGapsAnalysis": CreditConfigFieldType,
"crdApproval": CreditConfigFieldType,
"previousLoans": CreditConfigFieldType,
"riskFlags": CreditConfigFieldType,
"creditStatus": CreditConfigFieldType,
"pendingKycChecks": CreditConfigFieldType,
"highDepositOverride": CreditConfigFieldType,
"loanDuration": CreditConfigFieldType,
"pricePlanCreditStatus": CreditConfigFieldType,
"approvalCreditStatus": CreditConfigFieldType,
"depositAndDeliveryCreditStatus": CreditConfigFieldType,
"finalRiskScore": CreditConfigFieldType,
"creditCallStatus": CreditConfigFieldType
}
CreditCallTypeEnum
Description
Type of credit call made — with or without next of kin
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"NOK"
CreditConfigFieldType
Fields
| Field Name | Description |
|---|---|
name - String!
|
|
options - [DropdownOptionType!]!
|
Example
{
"name": "abc123",
"options": [DropdownOptionType]
}
CreditNamespace
Fields
| Field Name | Description |
|---|---|
queueAnalytics - QueueAnalyticsType!
|
Get queue analytics (counts, wait time, agent availability) for a queue scoped to a time frame |
Arguments
|
|
queueWorkload - QueueWorkloadResponseType!
|
Get per-agent workload breakdown for a queue, optionally narrowed to one agent |
Arguments
|
|
queueApplicationsOffset - OffsetPaginatedApplications!
|
Get queue applications with offset pagination |
Arguments
|
|
queueApplicationsCursor - CursorPaginatedApplications!
|
Get queue applications with cursor pagination |
Arguments
|
|
updateCreditProspectStage - ApplicationEntityGraphQL!
|
Update the prospect stage of a credit application |
Arguments
|
|
assignCreditAgent - ApplicationEntityGraphQL!
|
Assign a scorer, caller, or decisioner agent to a credit application |
Arguments
|
|
updateCreditApplication - ApplicationEntityGraphQL!
|
Update a credit application. Use the type field to route to specific handlers (validation, nok, credit_call, crb_info, resubmission, credit_status) or omit for a general update. |
Arguments
|
|
retryOrderCreation - ApplicationEntityGraphQL!
|
Retry order creation for an application stuck in needs_review after the user has resolved conflicting orders |
Arguments
|
|
Example
{
"queueAnalytics": QueueAnalyticsType,
"queueWorkload": QueueWorkloadResponseType,
"queueApplicationsOffset": OffsetPaginatedApplications,
"queueApplicationsCursor": CursorPaginatedApplications,
"updateCreditProspectStage": ApplicationEntityGraphQL,
"assignCreditAgent": ApplicationEntityGraphQL,
"updateCreditApplication": ApplicationEntityGraphQL,
"retryOrderCreation": ApplicationEntityGraphQL
}
CreditQueue
Description
Business queue for credit processing
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"SCORING"
CreditQueueState
Description
State of work within a credit queue
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"WAITING"
CreditUpdateType
Description
Type of credit update. Leave empty for general credit application update.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"VALIDATION"
CryptoRequestInput
Example
{
"amount": 987.65,
"currency": "abc123",
"reference": "xyz789",
"customer_id": "abc123",
"wallet_id": "xyz789",
"description": "abc123",
"metadata": {},
"walletAddress": "abc123",
"network": "xyz789"
}
CurrencyEnum
Description
Currency of payment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"KES"
CursorPaginatedAgentProfiles
Fields
| Field Name | Description |
|---|---|
data - [AgentProfileObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [AgentProfileObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedApplicationCallDetails
Fields
| Field Name | Description |
|---|---|
data - [ApplicationCallDetailsType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ApplicationCallDetailsType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedApplications
Fields
| Field Name | Description |
|---|---|
data - [ApplicationEntityGraphQL!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ApplicationEntityGraphQL],
"pagination": CursorPaginationMetadata
}
CursorPaginatedAuditLogs
Fields
| Field Name | Description |
|---|---|
data - [AuditLogObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [AuditLogObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedCallDispositions
Fields
| Field Name | Description |
|---|---|
data - [CallDispositionType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CallDispositionType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedCategories
Fields
| Field Name | Description |
|---|---|
data - [CategoryObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CategoryObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedCohorts
Fields
| Field Name | Description |
|---|---|
data - [CohortObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CohortObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedCommunications
Fields
| Field Name | Description |
|---|---|
data - [CommunicationObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CommunicationObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedConditions
Fields
| Field Name | Description |
|---|---|
data - [ConditionObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ConditionObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedCountries
Fields
| Field Name | Description |
|---|---|
data - [CountryObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CountryObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedCustomerReferrals
Fields
| Field Name | Description |
|---|---|
data - [CustomerReferralDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CustomerReferralDto],
"pagination": CursorPaginationMetadata
}
CursorPaginatedDeliveries
Fields
| Field Name | Description |
|---|---|
data - [DeliveryObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [DeliveryObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedDeliveryCalls
Fields
| Field Name | Description |
|---|---|
data - [DeliveryCallObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [DeliveryCallObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedDeliveryItems
Fields
| Field Name | Description |
|---|---|
data - [DeliveryItemObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [DeliveryItemObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedDistricts
Fields
| Field Name | Description |
|---|---|
data - [DistrictObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [DistrictObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedFlashSaleItems
Fields
| Field Name | Description |
|---|---|
data - [FlashSaleItemObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [FlashSaleItemObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedFlashSales
Fields
| Field Name | Description |
|---|---|
data - [FlashSaleObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [FlashSaleObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedGroups
Fields
| Field Name | Description |
|---|---|
data - [GroupObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [GroupObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedInternalStaffProfiles
Fields
| Field Name | Description |
|---|---|
data - [InternalStaffProfileObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [InternalStaffProfileObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedInventory
Fields
| Field Name | Description |
|---|---|
data - [InventoryObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [InventoryObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedInventoryLocations
Fields
| Field Name | Description |
|---|---|
data - [InventoryLocationObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [InventoryLocationObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedLoanContracts
Fields
| Field Name | Description |
|---|---|
data - [LoanContractDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [LoanContractDto],
"pagination": CursorPaginationMetadata
}
CursorPaginatedLoanInstallments
Fields
| Field Name | Description |
|---|---|
data - [LoanInstallmentDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [LoanInstallmentDto],
"pagination": CursorPaginationMetadata
}
CursorPaginatedLoanLedger
Fields
| Field Name | Description |
|---|---|
data - [LoanLedgerDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [LoanLedgerDto],
"pagination": CursorPaginationMetadata
}
CursorPaginatedMediaAssets
Fields
| Field Name | Description |
|---|---|
data - [MediaAssetDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [MediaAssetDto],
"pagination": CursorPaginationMetadata
}
CursorPaginatedPartnerProfiles
Fields
| Field Name | Description |
|---|---|
data - [PartnerProfileObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PartnerProfileObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedPaymentAdjustments
Fields
| Field Name | Description |
|---|---|
data - [PaymentAdjustmentsEntityType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PaymentAdjustmentsEntityType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedPayments
Fields
| Field Name | Description |
|---|---|
data - [PaymentsEntityType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PaymentsEntityType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedPricePlans
Fields
| Field Name | Description |
|---|---|
data - [PricePlanObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PricePlanObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedProductOffers
Fields
| Field Name | Description |
|---|---|
data - [ProductOfferObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ProductOfferObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedProducts
Fields
| Field Name | Description |
|---|---|
data - [ProductObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ProductObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedRawCustomers
Fields
| Field Name | Description |
|---|---|
data - [RawCustomersDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [RawCustomersDto],
"pagination": CursorPaginationMetadata
}
CursorPaginatedRawRisk
Fields
| Field Name | Description |
|---|---|
data - [RawRiskDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [RawRiskDto],
"pagination": CursorPaginationMetadata
}
CursorPaginatedRawWalletTransactions
Fields
| Field Name | Description |
|---|---|
data - [RawWalletTransactionsDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [RawWalletTransactionsDto],
"pagination": CursorPaginationMetadata
}
CursorPaginatedRefunds
Fields
| Field Name | Description |
|---|---|
data - [RefundGraphQL!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [RefundGraphQL],
"pagination": CursorPaginationMetadata
}
CursorPaginatedRegions
Fields
| Field Name | Description |
|---|---|
data - [RegionObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [RegionObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedRepairs
Fields
| Field Name | Description |
|---|---|
data - [RepairObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [RepairObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedResubmissions
Fields
| Field Name | Description |
|---|---|
data - [ApplicationResubmissionGraphQL!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ApplicationResubmissionGraphQL],
"pagination": CursorPaginationMetadata
}
CursorPaginatedReturns
Fields
| Field Name | Description |
|---|---|
data - [ReturnsGraphQL!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ReturnsGraphQL],
"pagination": CursorPaginationMetadata
}
CursorPaginatedReturnsOpsTableRows
Fields
| Field Name | Description |
|---|---|
data - [ReturnsOpsTableRow!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ReturnsOpsTableRow],
"pagination": CursorPaginationMetadata
}
CursorPaginatedRoles
Fields
| Field Name | Description |
|---|---|
data - [RoleObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [RoleObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedSales
Fields
| Field Name | Description |
|---|---|
data - [SalesObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [SalesObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedSellerCatalog
Fields
| Field Name | Description |
|---|---|
data - [SellerCatalogObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [SellerCatalogObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedSellerTiers
Fields
| Field Name | Description |
|---|---|
data - [SellerTierObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [SellerTierObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedSellers
Fields
| Field Name | Description |
|---|---|
data - [SellerObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [SellerObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedSkus
Fields
| Field Name | Description |
|---|---|
data - [SkuObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [SkuObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedUsers
Fields
| Field Name | Description |
|---|---|
data - [UserObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [UserObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginatedValidationRecords
Fields
| Field Name | Description |
|---|---|
data - [ValidationRecordGraphQLEntity!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ValidationRecordGraphQLEntity],
"pagination": CursorPaginationMetadata
}
CursorPaginatedWards
Fields
| Field Name | Description |
|---|---|
data - [WardObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [WardObjectType],
"pagination": CursorPaginationMetadata
}
CursorPaginationInputType
Fields
| Input Field | Description |
|---|---|
limit - Int
|
Number of items to fetch. Default = 20 |
cursor - String
|
Cursor for pagination |
sortDirection - SortOrder
|
Sort direction. Default = DESC |
sortField - String
|
Field to sort by |
rangeField - String
|
Field to apply date range filter |
startDate - DateTime
|
Start date for range filter |
endDate - DateTime
|
End date for range filter |
direction - String
|
Example
{
"limit": 123,
"cursor": "xyz789",
"sortDirection": "ASC",
"sortField": "abc123",
"rangeField": "abc123",
"startDate": "2007-12-03T10:15:30Z",
"endDate": "2007-12-03T10:15:30Z",
"direction": "xyz789"
}
CursorPaginationMetadata
Example
{
"nextCursor": "xyz789",
"prevCursor": "abc123",
"hasNext": false,
"hasPrev": true,
"count": 987
}
CursorsPaginatedCommissionOverrides
Fields
| Field Name | Description |
|---|---|
data - [CommissionOverrideObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CommissionOverrideObjectType],
"pagination": CursorPaginationMetadata
}
CursorsPaginatedCommissions
Fields
| Field Name | Description |
|---|---|
data - [CommissionObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CommissionObjectType],
"pagination": CursorPaginationMetadata
}
CursorsPaginatedInventoryAllocations
Fields
| Field Name | Description |
|---|---|
data - [InventoryAllocationObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [InventoryAllocationObjectType],
"pagination": CursorPaginationMetadata
}
CursorsPaginatedOrderItems
Fields
| Field Name | Description |
|---|---|
data - [OrderItemObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [OrderItemObjectType],
"pagination": CursorPaginationMetadata
}
CursorsPaginatedOrders
Fields
| Field Name | Description |
|---|---|
data - [OrderObjectType!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [OrderObjectType],
"pagination": CursorPaginationMetadata
}
DateFilterInput
Example
{
"eq": "2007-12-03T10:15:30Z",
"gt": "2007-12-03T10:15:30Z",
"gte": "2007-12-03T10:15:30Z",
"lt": "2007-12-03T10:15:30Z",
"lte": "2007-12-03T10:15:30Z",
"between_from": "2007-12-03T10:15:30Z",
"between_to": "2007-12-03T10:15:30Z",
"exists": false
}
DateTime
Description
A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format.
Example
"2007-12-03T10:15:30Z"
DeactivateRawRiskInput
Fields
| Input Field | Description |
|---|---|
removal_reason - String
|
Example
{"removal_reason": "xyz789"}
DebitCreditEnum
Description
Debit or credit transaction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"DEBIT"
DecisionerDetailsType
Fields
| Field Name | Description |
|---|---|
decisioner_id - String
|
|
status - DecisionerStatus
|
|
decisioner_notes - String
|
|
confirmed_price_plan - String
|
|
confirmed_price_plan_name - String
|
Resolved price plan name (populated by field resolver) |
confirmed_target_device_model - String
|
|
confirmed_target_device_model_name - String
|
Resolved SKU name (populated by field resolver) |
confirmed_cash_price - Float
|
|
confirmed_topup_amount - Float
|
|
confirmed_refund_amount - Float
|
|
calculated_deposit_amount - Float
|
|
calculated_weekly_instalment_amount - Float
|
|
calculated_topup_amount - Float
|
|
calculated_refund_amount - Float
|
|
arrears_amount_at_escalation - Float
|
Ledger arrears snapshot when escalated to credit |
required_arrears_payment_amount - Float
|
KES the customer must pay toward arrears before proceeding |
new_loan_term_months - Int
|
|
decided_at - DateTime
|
Example
{
"decisioner_id": "abc123",
"status": "APPROVED",
"decisioner_notes": "xyz789",
"confirmed_price_plan": "abc123",
"confirmed_price_plan_name": "abc123",
"confirmed_target_device_model": "abc123",
"confirmed_target_device_model_name": "abc123",
"confirmed_cash_price": 987.65,
"confirmed_topup_amount": 987.65,
"confirmed_refund_amount": 123.45,
"calculated_deposit_amount": 987.65,
"calculated_weekly_instalment_amount": 987.65,
"calculated_topup_amount": 987.65,
"calculated_refund_amount": 123.45,
"arrears_amount_at_escalation": 123.45,
"required_arrears_payment_amount": 987.65,
"new_loan_term_months": 123,
"decided_at": "2007-12-03T10:15:30Z"
}
DecisionerStatus
Description
Status of the decisioner review
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"APPROVED"
DeleteRetailerOutletInput
DelinquencyStatusEnum
Description
Status of loan delinquency
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CURRENT"
DepartmentEnum
Description
Organizational departments
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"SALES"
DrCrEnum
Description
Debit or Credit indicator
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"DR"
DropdownOptionType
DumpFileInput
Fields
| Input Field | Description |
|---|---|
file - Upload!
|
Example
{"file": Upload}
DuplicateDetailGraphQL
Fields
| Field Name | Description |
|---|---|
duplicate_ids - [String!]!
|
List of duplicate IDs found |
source - String
|
Source of the duplicate detection |
type - String
|
Type of duplicate found |
table - String
|
Database table where duplicates were found |
tenant_id - String
|
Tenant ID associated with duplicate |
duplicate_prospect_id - String
|
Duplicate prospect ID |
Example
{
"duplicate_ids": ["abc123"],
"source": "abc123",
"type": "abc123",
"table": "abc123",
"tenant_id": "abc123",
"duplicate_prospect_id": "xyz789"
}
DuplicatePreviewCheckInput
Example
{
"applicationId": 4,
"idNumber": "xyz789",
"phoneNumber": "xyz789",
"nokIdNumber": "xyz789",
"nokPhoneNumber": "xyz789",
"dsrId": "abc123",
"checkType": "DUPLICATE"
}
DuplicatePreviewCheckResult
Fields
| Field Name | Description |
|---|---|
wouldBlock - Boolean!
|
|
customerId - DuplicatePreviewCheckTypeResult
|
|
customerPhone - DuplicatePreviewCheckTypeResult
|
|
nokId - DuplicatePreviewCheckTypeResult
|
|
nokPhone - DuplicatePreviewCheckTypeResult
|
Example
{
"wouldBlock": false,
"customerId": DuplicatePreviewCheckTypeResult,
"customerPhone": DuplicatePreviewCheckTypeResult,
"nokId": DuplicatePreviewCheckTypeResult,
"nokPhone": DuplicatePreviewCheckTypeResult
}
DuplicatePreviewCheckType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"DUPLICATE"
DuplicatePreviewCheckTypeResult
Fields
| Field Name | Description |
|---|---|
wouldBlock - Boolean!
|
|
action - String
|
|
message - String
|
|
matches - [DuplicatePreviewMatch!]!
|
Example
{
"wouldBlock": false,
"action": "xyz789",
"message": "abc123",
"matches": [DuplicatePreviewMatch]
}
DuplicatePreviewMatch
Fields
| Field Name | Description |
|---|---|
duplicateIds - [String!]!
|
|
source - String
|
|
table - String
|
|
tag - String
|
|
bucket - String
|
|
tenantId - String
|
|
riskRecords - [RawRiskDto!]
|
|
loanContracts - [LoanContractDto!]
|
|
rawCustomers - [RawCustomersDto!]
|
|
payments - [PaymentsEntityType!]
|
Example
{
"duplicateIds": ["abc123"],
"source": "abc123",
"table": "xyz789",
"tag": "xyz789",
"bucket": "abc123",
"tenantId": "abc123",
"riskRecords": [RawRiskDto],
"loanContracts": [LoanContractDto],
"rawCustomers": [RawCustomersDto],
"payments": [PaymentsEntityType]
}
EarlySettlementQuoteType
Fields
| Field Name | Description |
|---|---|
contract_id - ID!
|
|
as_of_date - DateTime!
|
|
remaining_balance - Float!
|
|
discount_percent - Float
|
|
discount_amount - Float
|
|
customer_payable - Float!
|
|
discount_applied - Boolean!
|
|
eligible_discount_window - Int
|
|
loan_product_code - String
|
|
paid_off_override - String
|
|
early_payoff_discounts - [LoanEarlyPayoffDiscountType!]!
|
Example
{
"contract_id": "4",
"as_of_date": "2007-12-03T10:15:30Z",
"remaining_balance": 123.45,
"discount_percent": 123.45,
"discount_amount": 987.65,
"customer_payable": 987.65,
"discount_applied": false,
"eligible_discount_window": 123,
"loan_product_code": "xyz789",
"paid_off_override": "xyz789",
"early_payoff_discounts": [LoanEarlyPayoffDiscountType]
}
EmailAttachmentInput
EmailAttachmentObjectType
EmailDataInput
Example
{
"to": "abc123",
"from": "xyz789",
"cc": ["xyz789"],
"bcc": ["xyz789"],
"replyTo": "xyz789",
"attachments": [EmailAttachmentInput],
"html": "abc123",
"text": "abc123",
"templateId": "abc123",
"templateData": {}
}
EmailDataObjectType
Example
{
"to": "xyz789",
"from": "xyz789",
"cc": ["xyz789"],
"bcc": ["abc123"],
"replyTo": "xyz789",
"attachments": [EmailAttachmentObjectType],
"html": "abc123",
"text": "abc123",
"templateId": "abc123",
"templateData": {}
}
EmploymentTypeEnum
Description
Type of employment contract
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"FULL_TIME"
EntityType
Description
Types of entities that can be assigned to territories
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"AGENT"
EntityTypeEnum
Description
Types of partner entities
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"INDIVIDUAL"
EnumOptionType
EscalationLevelEnum
Description
Level of delinquency escalation
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"REMINDER"
ExemptionAgentTypeEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"SCORING"
ExemptionEligibilityType
Fields
| Field Name | Description |
|---|---|
eligible - Boolean!
|
|
risks - [RawRiskDto!]!
|
|
exemptionType - ExemptionTypeEnum
|
|
creditStatus - String
|
|
agentTypes - [ExemptionAgentTypeEnum!]
|
Example
{
"eligible": false,
"risks": [RawRiskDto],
"exemptionType": "TERMS_ACCEPTANCE",
"creditStatus": "xyz789",
"agentTypes": ["SCORING"]
}
ExemptionTypeEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"TERMS_ACCEPTANCE"
ExternalShopNamespace
Fields
| Field Name | Description |
|---|---|
createExternalShopOwner - PartnerProfileObjectType!
|
Create external shop owner |
Arguments
|
|
createShopAttendant - PartnerProfileObjectType!
|
Create shop attendant |
Arguments
|
|
updateShopOwner - PartnerProfileObjectType!
|
Update shop owner |
Arguments
|
|
updateShopAttendant - PartnerProfileObjectType!
|
Update shop attendant |
Arguments
|
|
Example
{
"createExternalShopOwner": PartnerProfileObjectType,
"createShopAttendant": PartnerProfileObjectType,
"updateShopOwner": PartnerProfileObjectType,
"updateShopAttendant": PartnerProfileObjectType
}
FateGuideExplainerMonitoringValueDto
FateGuideExplainerMonitoringValueType
FateGuideExplainerRafMonitoringDto
Description
Explainer RAF monitoring payload
Fields
| Field Name | Description |
|---|---|
bettingRatio - FateGuideExplainerMonitoringValueDto
|
|
p2pShare - FateGuideExplainerMonitoringValueDto
|
|
cov - FateGuideExplainerMonitoringValueDto
|
|
age - FateGuideExplainerMonitoringValueDto
|
|
crbPositiveScore - FateGuideExplainerMonitoringValueDto
|
Example
{
"bettingRatio": FateGuideExplainerMonitoringValueDto,
"p2pShare": FateGuideExplainerMonitoringValueDto,
"cov": FateGuideExplainerMonitoringValueDto,
"age": FateGuideExplainerMonitoringValueDto,
"crbPositiveScore": FateGuideExplainerMonitoringValueDto
}
FateGuideExplainerRafMonitoringType
Fields
| Field Name | Description |
|---|---|
bettingRatio - FateGuideExplainerMonitoringValueType
|
|
p2pShare - FateGuideExplainerMonitoringValueType
|
|
cov - FateGuideExplainerMonitoringValueType
|
|
age - FateGuideExplainerMonitoringValueType
|
|
crbPositiveScore - FateGuideExplainerMonitoringValueType
|
Example
{
"bettingRatio": FateGuideExplainerMonitoringValueType,
"p2pShare": FateGuideExplainerMonitoringValueType,
"cov": FateGuideExplainerMonitoringValueType,
"age": FateGuideExplainerMonitoringValueType,
"crbPositiveScore": FateGuideExplainerMonitoringValueType
}
FateGuideOfferType
Description
Fate guide offer type
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"LOAN_APPROVED"
FateGuideRuntimeExplanationDto
Description
Python v2 explainer payload
Fields
| Field Name | Description |
|---|---|
recommendation - String
|
|
reason - String
|
|
affordabilitySource - String
|
|
spinAffordability - Float
|
|
crbInferredAffordability - Float
|
|
adjustedAffordability - Float
|
|
sdiPct - Float
|
|
tier - String
|
|
tierThresholds - String
|
|
slopeBucket - String
|
|
haircutPct - Float
|
|
maxCashPrice - Float
|
|
maxCashPriceHigh - Float
|
|
maxCashPriceMosaver - Float
|
|
keyFormulas - [String!]
|
|
rafMonitoring - FateGuideExplainerRafMonitoringDto
|
Example
{
"recommendation": "abc123",
"reason": "abc123",
"affordabilitySource": "abc123",
"spinAffordability": 123.45,
"crbInferredAffordability": 987.65,
"adjustedAffordability": 987.65,
"sdiPct": 987.65,
"tier": "abc123",
"tierThresholds": "xyz789",
"slopeBucket": "xyz789",
"haircutPct": 123.45,
"maxCashPrice": 123.45,
"maxCashPriceHigh": 123.45,
"maxCashPriceMosaver": 987.65,
"keyFormulas": ["abc123"],
"rafMonitoring": FateGuideExplainerRafMonitoringDto
}
FateGuideRuntimeExplanationType
Fields
| Field Name | Description |
|---|---|
recommendation - String
|
|
reason - String
|
|
affordabilitySource - String
|
|
spinAffordability - Float
|
|
crbInferredAffordability - Float
|
|
adjustedAffordability - Float
|
|
sdiPct - Float
|
|
tier - String
|
|
tierThresholds - String
|
|
slopeBucket - String
|
|
haircutPct - Float
|
|
maxCashPrice - Float
|
|
maxCashPriceHigh - Float
|
|
maxCashPriceMosaver - Float
|
|
keyFormulas - [String!]
|
|
rafMonitoring - FateGuideExplainerRafMonitoringType
|
Example
{
"recommendation": "xyz789",
"reason": "abc123",
"affordabilitySource": "abc123",
"spinAffordability": 987.65,
"crbInferredAffordability": 987.65,
"adjustedAffordability": 987.65,
"sdiPct": 123.45,
"tier": "abc123",
"tierThresholds": "abc123",
"slopeBucket": "abc123",
"haircutPct": 987.65,
"maxCashPrice": 987.65,
"maxCashPriceHigh": 123.45,
"maxCashPriceMosaver": 123.45,
"keyFormulas": ["xyz789"],
"rafMonitoring": FateGuideExplainerRafMonitoringType
}
FateGuideRuntimeFormulasDto
Description
Runtime derived formulas payload
Fields
| Field Name | Description |
|---|---|
grossInflows - Float
|
|
inorganicBanks - Float
|
|
inorganicMfis - Float
|
|
inorganicMobileLenders - Float
|
|
inorganicBetting - Float
|
|
inorganicInsurance - Float
|
|
inorganicTotal - Float
|
|
inorganicPct - Float
|
|
netInflows - Float
|
|
essentials - Float
|
|
loanRepayments - Float
|
|
frequentP2pSent - Float
|
|
frequentP2pTxnsPm - Float
|
|
nondiscretionary - Float
|
|
nondiscretionaryPct - Float
|
|
disposableIncome - Float
|
|
disposableIncomeMonthly - Float
|
|
monthlyDataPoints - Int
|
|
covBucket - String
|
|
dirPct - Float
|
|
p2pReceivedTotal - Float
|
|
top10P2pTotal - Float
|
|
top10P2pShare - Float
|
|
p2pHaircutPct - Float
|
|
loanExposure - Float
|
|
fulizaPerMonth - Float
|
|
fulizaOvercountFlag - Boolean
|
|
financialHaircutPct - Float
|
|
bettingSent - Float
|
|
bettingPerMonth - Float
|
|
bettingFreqFlag - Boolean
|
|
bettingHaircutPct - Float
|
|
totalRafPct - Float
|
|
maxInstallmentPreRaf - Float
|
|
maxInstallment - Float
|
|
rejected - Boolean
|
|
negativeDisposableFlag - Boolean
|
Example
{
"grossInflows": 987.65,
"inorganicBanks": 987.65,
"inorganicMfis": 123.45,
"inorganicMobileLenders": 987.65,
"inorganicBetting": 123.45,
"inorganicInsurance": 123.45,
"inorganicTotal": 987.65,
"inorganicPct": 123.45,
"netInflows": 987.65,
"essentials": 987.65,
"loanRepayments": 123.45,
"frequentP2pSent": 987.65,
"frequentP2pTxnsPm": 987.65,
"nondiscretionary": 123.45,
"nondiscretionaryPct": 987.65,
"disposableIncome": 987.65,
"disposableIncomeMonthly": 987.65,
"monthlyDataPoints": 987,
"covBucket": "abc123",
"dirPct": 123.45,
"p2pReceivedTotal": 123.45,
"top10P2pTotal": 987.65,
"top10P2pShare": 123.45,
"p2pHaircutPct": 123.45,
"loanExposure": 123.45,
"fulizaPerMonth": 987.65,
"fulizaOvercountFlag": false,
"financialHaircutPct": 987.65,
"bettingSent": 123.45,
"bettingPerMonth": 123.45,
"bettingFreqFlag": true,
"bettingHaircutPct": 987.65,
"totalRafPct": 987.65,
"maxInstallmentPreRaf": 123.45,
"maxInstallment": 987.65,
"rejected": false,
"negativeDisposableFlag": true
}
FateGuideRuntimeLoanRecordDto
Description
CRB loan record in runtime result
Example
{
"status": "xyz789",
"accountStatus": "abc123",
"principal_amount": 123.45,
"originalAmount": 123.45,
"instalment_amount": 987.65,
"scheduledPaymentAmount": 987.65,
"term_months": 123.45,
"repaymentPeriod": 987.65
}
FateGuideRuntimeLoanRecordType
Example
{
"status": "xyz789",
"accountStatus": "abc123",
"principal_amount": 987.65,
"originalAmount": 123.45,
"instalment_amount": 987.65,
"scheduledPaymentAmount": 987.65,
"term_months": 123.45,
"repaymentPeriod": 123.45
}
FateGuideRuntimeSignalsDto
Description
Runtime signal payload
Example
{
"slopeBucket": "xyz789",
"spinAffordability": 987.65,
"slopePctPerMonth": 987.65,
"bettingRatio": 987.65,
"p2pShare": 123.45,
"cov": 123.45,
"age": 987.65
}
FateGuideRuntimeSignalsType
Example
{
"slopeBucket": "abc123",
"spinAffordability": 123.45,
"slopePctPerMonth": 123.45,
"bettingRatio": 987.65,
"p2pShare": 123.45,
"cov": 987.65,
"age": 123.45
}
FateGuideScoresCursorPaginatedResponse
Description
Cursor paginated fate guide scores response
Fields
| Field Name | Description |
|---|---|
data - [FateGuideScoresDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [FateGuideScoresDto],
"pagination": CursorPaginationMetadata
}
FateGuideScoresDto
Description
Fate guide score record
Fields
| Field Name | Description |
|---|---|
id - ID
|
Unique identifier |
_id - ID
|
Unique identifier |
application_id - ID
|
|
application - ApplicationEntityGraphQL
|
The application associated with this fate guide score |
customer_id - String
|
|
crb_transaction_id - ID
|
|
mobile_analysis_id - String
|
|
document_id - ID
|
|
crb_score - String
|
|
crb_past_default_record - Float
|
|
customer_age - Int
|
|
big_loan_default - String
|
|
model_type - String
|
|
fate_guide_message - String
|
|
requires_recheck - Boolean
|
|
sale_agent_id - String
|
|
available_plans - [String!]
|
|
version - Int
|
|
sku - String
|
|
type - String
|
|
active - Boolean
|
|
devicePrice - Float
|
|
durationMonths - Int
|
|
age - Float
|
|
loanHistory - [FateGuideRuntimeLoanRecordDto!]
|
|
signals - FateGuideRuntimeSignalsDto
|
|
tier - String
|
|
status - String
|
|
rejectionReason - String
|
|
statementLength - Float
|
|
minimumRequired - Float
|
|
sdiPct - Float
|
|
maxMonthlyInstallment - Float
|
|
maxCashPrice - Float
|
|
maxCashPriceHigh - Float
|
|
maxCashPriceMosaver - Float
|
|
productBand - String
|
|
canonicalProductBand - String
|
|
depositLevel - String
|
|
affordabilitySource - String
|
|
affordabilityValue - Float
|
|
adjustedAffordability - Float
|
|
crbInferredAffordability - Float
|
|
recommendation - String
|
|
slopeBucket - String
|
|
slopeHaircutPct - Float
|
|
bettingRatio - Float
|
|
p2pShare - Float
|
|
crbPositiveScore - Float
|
|
cov - Float
|
|
productBands - JSON
|
|
deviceAssessment - JSON
|
|
customerName - String
|
|
assessedAt - String
|
|
modelVersion - String
|
|
formulas - FateGuideRuntimeFormulasDto
|
|
explanation - FateGuideRuntimeExplanationDto
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
Example
{
"id": 4,
"_id": 4,
"application_id": "4",
"application": ApplicationEntityGraphQL,
"customer_id": "xyz789",
"crb_transaction_id": "4",
"mobile_analysis_id": "abc123",
"document_id": 4,
"crb_score": "xyz789",
"crb_past_default_record": 987.65,
"customer_age": 987,
"big_loan_default": "abc123",
"model_type": "xyz789",
"fate_guide_message": "xyz789",
"requires_recheck": true,
"sale_agent_id": "xyz789",
"available_plans": ["xyz789"],
"version": 123,
"sku": "xyz789",
"type": "xyz789",
"active": false,
"devicePrice": 123.45,
"durationMonths": 123,
"age": 987.65,
"loanHistory": [FateGuideRuntimeLoanRecordDto],
"signals": FateGuideRuntimeSignalsDto,
"tier": "xyz789",
"status": "xyz789",
"rejectionReason": "xyz789",
"statementLength": 123.45,
"minimumRequired": 123.45,
"sdiPct": 123.45,
"maxMonthlyInstallment": 123.45,
"maxCashPrice": 123.45,
"maxCashPriceHigh": 123.45,
"maxCashPriceMosaver": 123.45,
"productBand": "abc123",
"canonicalProductBand": "abc123",
"depositLevel": "xyz789",
"affordabilitySource": "abc123",
"affordabilityValue": 987.65,
"adjustedAffordability": 987.65,
"crbInferredAffordability": 987.65,
"recommendation": "abc123",
"slopeBucket": "abc123",
"slopeHaircutPct": 987.65,
"bettingRatio": 987.65,
"p2pShare": 987.65,
"crbPositiveScore": 987.65,
"cov": 123.45,
"productBands": {},
"deviceAssessment": {},
"customerName": "xyz789",
"assessedAt": "xyz789",
"modelVersion": "xyz789",
"formulas": FateGuideRuntimeFormulasDto,
"explanation": FateGuideRuntimeExplanationDto,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
FateGuideScoresFilterInput
Description
Filter input for querying fate guide scores
Fields
| Input Field | Description |
|---|---|
application_id - String
|
Filter by application ID |
customer_id - String
|
Filter by customer ID |
fate_model - ModelCreditDecision
|
Filter by compatibility fate model |
fate_guide - FateGuideOfferType
|
Filter by compatibility fate guide |
type - FateGuideType
|
Filter by fate guide type |
active - Boolean
|
Filter by active status |
model_type - String
|
Filter by model type |
crb_score - String
|
Filter by CRB score |
Example
{
"application_id": "xyz789",
"customer_id": "abc123",
"fate_model": "ALLGO",
"fate_guide": "LOAN_APPROVED",
"type": "PRESCREENING",
"active": false,
"model_type": "xyz789",
"crb_score": "abc123"
}
FateGuideScoresOffsetPaginatedResponse
Description
Offset paginated fate guide scores response
Fields
| Field Name | Description |
|---|---|
data - [FateGuideScoresDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [FateGuideScoresDto],
"metadata": OffsetPaginationMetadata
}
FateGuideScoresType
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
application_id - ID
|
|
customer_id - String
|
|
crb_transaction_id - ID
|
|
mobile_analysis_id - String
|
|
document_id - ID
|
|
crb_score - String
|
|
crb_past_default_record - Float
|
|
customer_age - Int
|
|
big_loan_default - String
|
|
model_type - String
|
|
fate_guide_message - String
|
|
requires_recheck - Boolean
|
|
sale_agent_id - String
|
|
available_plans - [String!]
|
|
available_price_plans - [PricePlanObjectType!]
|
Resolved price plan objects for the available_plans IDs on this fate guide |
Arguments
|
|
version - Int
|
|
sku - String
|
|
type - String
|
|
active - Boolean
|
|
devicePrice - Float
|
|
durationMonths - Int
|
|
age - Float
|
|
loanHistory - [FateGuideRuntimeLoanRecordType!]
|
|
signals - FateGuideRuntimeSignalsType
|
|
tier - String
|
|
sdiPct - Float
|
|
maxCashPrice - Float
|
|
maxCashPriceHigh - Float
|
|
maxCashPriceMosaver - Float
|
|
productBand - String
|
|
depositLevel - String
|
|
affordabilitySource - String
|
|
affordabilityValue - Float
|
|
adjustedAffordability - Float
|
|
recommendation - String
|
|
slopeBucket - String
|
|
slopeHaircutPct - Float
|
|
bettingRatio - Float
|
|
p2pShare - Float
|
|
crbPositiveScore - Float
|
|
cov - Float
|
|
formulas - JSON
|
|
explanation - FateGuideRuntimeExplanationType
|
|
createdAt - DateTime
|
|
updatedAt - DateTime
|
|
Example
{
"_id": "4",
"application_id": 4,
"customer_id": "abc123",
"crb_transaction_id": 4,
"mobile_analysis_id": "xyz789",
"document_id": 4,
"crb_score": "xyz789",
"crb_past_default_record": 987.65,
"customer_age": 123,
"big_loan_default": "xyz789",
"model_type": "abc123",
"fate_guide_message": "xyz789",
"requires_recheck": true,
"sale_agent_id": "abc123",
"available_plans": ["abc123"],
"available_price_plans": [PricePlanObjectType],
"version": 987,
"sku": "xyz789",
"type": "xyz789",
"active": false,
"devicePrice": 123.45,
"durationMonths": 123,
"age": 987.65,
"loanHistory": [FateGuideRuntimeLoanRecordType],
"signals": FateGuideRuntimeSignalsType,
"tier": "abc123",
"sdiPct": 123.45,
"maxCashPrice": 123.45,
"maxCashPriceHigh": 123.45,
"maxCashPriceMosaver": 987.65,
"productBand": "xyz789",
"depositLevel": "xyz789",
"affordabilitySource": "abc123",
"affordabilityValue": 987.65,
"adjustedAffordability": 123.45,
"recommendation": "xyz789",
"slopeBucket": "xyz789",
"slopeHaircutPct": 123.45,
"bettingRatio": 123.45,
"p2pShare": 987.65,
"crbPositiveScore": 987.65,
"cov": 987.65,
"formulas": {},
"explanation": FateGuideRuntimeExplanationType,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
FateGuideType
Description
Fate guide processing type
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"PRESCREENING"
FateGuideValidationCheckInput
Fields
| Input Field | Description |
|---|---|
applicationId - ID!
|
|
type - FateGuideType!
|
|
source - OnboardingFateGuideSource!
|
|
justification - String!
|
Reason for running this check |
Example
{
"applicationId": "4",
"type": "PRESCREENING",
"source": "PRESCREENING",
"justification": "abc123"
}
Float
Description
The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
987.65
FloatFilterInput
GPSCoordinatesObjectType
GapAnalysisCriteriaGraphQL
GapAnalysisMonthlyDataGraphQL
GapAnalysisResultGraphQL
Fields
| Field Name | Description |
|---|---|
pass - Boolean
|
|
status - GapAnalysisStatus
|
|
slope - Float
|
|
average_disposable - Float
|
|
month_5_disposable - Float
|
|
month_6_disposable - Float
|
|
standard_deviation - Float
|
|
coefficient_of_variation - Float
|
|
criteria - GapAnalysisCriteriaGraphQL
|
|
monthly_data - [GapAnalysisMonthlyDataGraphQL!]
|
Example
{
"pass": false,
"status": "PASSED",
"slope": 987.65,
"average_disposable": 123.45,
"month_5_disposable": 987.65,
"month_6_disposable": 987.65,
"standard_deviation": 987.65,
"coefficient_of_variation": 987.65,
"criteria": GapAnalysisCriteriaGraphQL,
"monthly_data": [GapAnalysisMonthlyDataGraphQL]
}
GapAnalysisStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PASSED"
GenerateDeliveryOtpInput
GenericValidationCheckInput
Fields
| Input Field | Description |
|---|---|
applicationId - ID!
|
|
iprsGatewayType - IprsPlatform
|
|
justification - String!
|
Reason for running this check |
Example
{
"applicationId": "4",
"iprsGatewayType": "TRANSUNION",
"justification": "xyz789"
}
GeoLocation
GetConditionFromQCReportInput
Fields
| Input Field | Description |
|---|---|
inventory_id - ID!
|
Inventory ID to get QC report and condition for |
Example
{"inventory_id": "4"}
GetUserRoleConfigInput
GpsCoordinatesInput
GracePeriodAwardResultType
Example
{
"success": true,
"contractId": "4",
"loanId": "abc123",
"category": "A",
"graceDays": 123,
"gracePeriodCreditExpiry": "2007-12-03T10:15:30Z",
"wasExtended": true
}
GracePeriodCategoryEnum
Description
Grace period category bands mapped to 5, 3, 2, and 1 days
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"A"
GracePeriodEligibilityInput
Fields
| Input Field | Description |
|---|---|
contract_id - ID!
|
Loan contract UUID |
Example
{"contract_id": 4}
GracePeriodEligibilityResultType
Example
{
"eligible": true,
"reason": "xyz789",
"contractId": "4",
"loanId": "xyz789",
"category": "A",
"maxAvailableDays": 123,
"selectableOptions": [987],
"currentGracePeriodExpiry": "2007-12-03T10:15:30Z",
"isActiveGracePeriod": false
}
GracePeriodRevocationResultType
GrantGracePeriodOverrideInput
Fields
| Input Field | Description |
|---|---|
contract_id - ID!
|
Loan contract UUID |
overrideCategory - GracePeriodCategoryEnum!
|
CRM-selected override category |
gracePeriodDays - Int!
|
Granted grace period days |
reason - String!
|
Reason for the manual override |
Example
{
"contract_id": "4",
"overrideCategory": "A",
"gracePeriodDays": 987,
"reason": "abc123"
}
ID
Description
The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.
Example
4
IMEIValidationResult
Example
{
"inventory_imei": "abc123",
"phonecheck_imei": "xyz789",
"phonecheck_imei2": "abc123",
"is_valid": false
}
IdType
Description
Type of identification document
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"NATIONAL_ID"
IdTypeFilterInput
IdentityVerificationTransactionCursorPaginatedResponse
Description
Cursor paginated identity verification transactions response
Fields
| Field Name | Description |
|---|---|
data - [IdentityVerificationTransactionDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [IdentityVerificationTransactionDto],
"pagination": CursorPaginationMetadata
}
IdentityVerificationTransactionDto
Description
Identity verification transaction record
Fields
| Field Name | Description |
|---|---|
_id - ID
|
Unique identifier |
provider - IprsPlatform!
|
IPRS verification provider |
full_name - String
|
Full name from verification |
gender - String
|
Gender |
date_of_birth - String
|
Date of birth |
place_of_birth - String
|
Place of birth |
kra_pin - String
|
KRA PIN |
citizenship - String
|
Citizenship |
is_alive - Int
|
Is alive status (1 = alive) |
identification_type - String
|
Type of identification document |
identification_number - String
|
Identification number |
id_serial - String
|
ID serial number |
uploaded_photo - String
|
Uploaded photo URL |
phone - String
|
Phone number |
email - String
|
Email address |
country - String
|
Country |
record_status - VerificationRecordStatus
|
Cache freshness state of this record |
createdAt - DateTime
|
Record creation timestamp |
Example
{
"_id": "4",
"provider": "TRANSUNION",
"full_name": "xyz789",
"gender": "abc123",
"date_of_birth": "abc123",
"place_of_birth": "xyz789",
"kra_pin": "xyz789",
"citizenship": "abc123",
"is_alive": 123,
"identification_type": "xyz789",
"identification_number": "abc123",
"id_serial": "xyz789",
"uploaded_photo": "xyz789",
"phone": "abc123",
"email": "abc123",
"country": "xyz789",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
IdentityVerificationTransactionFilterInput
Description
Filter input for querying identity verification transactions
Fields
| Input Field | Description |
|---|---|
identification_number - String
|
Filter by identification number |
provider - IprsPlatform
|
Filter by provider |
kra_pin - String
|
Filter by KRA PIN |
phone - String
|
Filter by phone number |
record_status - VerificationRecordStatus
|
Filter by cache freshness state |
Example
{
"identification_number": "abc123",
"provider": "TRANSUNION",
"kra_pin": "xyz789",
"phone": "abc123",
"record_status": "ACTIVE"
}
IdentityVerificationTransactionOffsetPaginatedResponse
Description
Offset paginated identity verification transactions response
Fields
| Field Name | Description |
|---|---|
data - [IdentityVerificationTransactionDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [IdentityVerificationTransactionDto],
"metadata": OffsetPaginationMetadata
}
InAppDataInput
Fields
| Input Field | Description |
|---|---|
actionUrl - String
|
|
actionButtonText - String
|
|
priority - InAppPriorityEnum
|
|
category - String
|
Example
{
"actionUrl": "abc123",
"actionButtonText": "abc123",
"priority": "LOW",
"category": "abc123"
}
InAppDataObjectType
Fields
| Field Name | Description |
|---|---|
actionUrl - String
|
|
actionButtonText - String
|
|
priority - InAppPriorityEnum
|
|
category - String
|
Example
{
"actionUrl": "xyz789",
"actionButtonText": "xyz789",
"priority": "LOW",
"category": "xyz789"
}
InAppPriorityEnum
Description
Priority level for in-app notifications
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"LOW"
IndividualDetailsDto
Fields
| Field Name | Description |
|---|---|
middle_name - String
|
Customer middle name |
gender - CustomerGenderEnum
|
Customer gender |
date_of_birth - String
|
Date of birth in ISO 8601 format |
secondary_phone - String
|
Secondary phone number |
marital_status - String
|
Marital status |
application_id - String
|
Application ID |
customer_source - String
|
Customer source |
customer_source_id - String
|
Customer source ID |
Example
{
"middle_name": "xyz789",
"gender": "MALE",
"date_of_birth": "abc123",
"secondary_phone": "xyz789",
"marital_status": "abc123",
"application_id": "xyz789",
"customer_source": "abc123",
"customer_source_id": "abc123"
}
IndividualDetailsInput
Example
{
"middle_name": "xyz789",
"gender": "MALE",
"date_of_birth": "xyz789",
"secondary_phone": "abc123",
"marital_status": "abc123",
"application_id": "xyz789",
"customer_source": "abc123",
"customer_source_id": "abc123"
}
InitiateLivenessCheckInput
Fields
| Input Field | Description |
|---|---|
applicationId - ID!
|
|
method - LivenessMethod!
|
Example
{"applicationId": "4", "method": "SELF"}
InstallmentStatusEnum
Description
Status of loan installment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
InstallmentTypeEnum
Description
Type of loan installment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"REGULAR"
Int
Description
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
987
IntFilterInput
InterestCalculationMethodEnum
Description
Method for calculating loan interest
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"SIMPLE_REDUCING_BALANCE"
IprsPlatform
Description
IPRS verification provider platforms
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"TRANSUNION"
IsBlockedCheckInput
Fields
| Input Field | Description |
|---|---|
customer_id - String
|
|
primary_id - String
|
|
primary_phone - String
|
|
action - RiskRestrictedActionEnum
|
Example
{
"customer_id": "xyz789",
"primary_id": "xyz789",
"primary_phone": "abc123",
"action": "BLOCK_NEW_CUSTOMERS"
}
JSON
Description
The JSON scalar type represents JSON values as specified by ECMA-404.
Example
{}
JSONObject
Description
The JSONObject scalar type represents JSON objects as specified by ECMA-404.
Example
{}
KYCApprovalAction
Description
The available actions for a kyc approval process
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"APPROVE"
KYCMetadataFilterInput
Fields
| Input Field | Description |
|---|---|
submitted_at - DateTime
|
|
reviewed_at - DateTime
|
|
reviewed_by - String
|
|
id_number - String
|
|
id_type - IdType
|
|
tax_pin - String
|
|
incorporation_number - String
|
|
organization_subtype - String
|
|
organization_name - String
|
|
primary_contact_name - String
|
|
primary_contact_phone - String
|
|
primary_contact_id_number - String
|
Example
{
"submitted_at": "2007-12-03T10:15:30Z",
"reviewed_at": "2007-12-03T10:15:30Z",
"reviewed_by": "xyz789",
"id_number": "abc123",
"id_type": "NATIONAL_ID",
"tax_pin": "abc123",
"incorporation_number": "abc123",
"organization_subtype": "abc123",
"organization_name": "xyz789",
"primary_contact_name": "xyz789",
"primary_contact_phone": "abc123",
"primary_contact_id_number": "xyz789"
}
KYCMetadataInput
Fields
| Input Field | Description |
|---|---|
review_notes - String
|
|
id_front_url - String
|
|
id_back_url - String
|
|
id_number - String
|
|
id_type - String
|
|
passport_photo_url - String
|
|
tax_certificate_url - String
|
|
tax_pin - String
|
|
incorporation_certificate_url - String
|
|
incorporation_number - String
|
|
organization_name - String
|
|
organization_email - String
|
|
organization_phone_number - String
|
|
company_logo_url - String
|
|
primary_contact_name - String
|
|
primary_contact_phone - String
|
|
primary_contact_id_front_url - String
|
|
primary_contact_id_back_url - String
|
|
primary_contact_id_number - String
|
|
primary_contact_role - String
|
|
primary_contact_passport_photo_url - String
|
Example
{
"review_notes": "abc123",
"id_front_url": "abc123",
"id_back_url": "abc123",
"id_number": "abc123",
"id_type": "xyz789",
"passport_photo_url": "abc123",
"tax_certificate_url": "xyz789",
"tax_pin": "abc123",
"incorporation_certificate_url": "xyz789",
"incorporation_number": "xyz789",
"organization_name": "xyz789",
"organization_email": "xyz789",
"organization_phone_number": "abc123",
"company_logo_url": "xyz789",
"primary_contact_name": "abc123",
"primary_contact_phone": "xyz789",
"primary_contact_id_front_url": "abc123",
"primary_contact_id_back_url": "xyz789",
"primary_contact_id_number": "xyz789",
"primary_contact_role": "abc123",
"primary_contact_passport_photo_url": "abc123"
}
KYCMetadataObjectType
Fields
| Field Name | Description |
|---|---|
submitted_at - DateTime
|
|
reviewed_at - DateTime
|
|
reviewed_by - String
|
|
review_notes - String
|
|
id_front_url - String
|
|
id_back_url - String
|
|
id_number - String
|
|
id_type - String
|
|
passport_photo_url - String
|
|
tax_certificate_url - String
|
|
tax_pin - String
|
|
incorporation_certificate_url - String
|
|
incorporation_number - String
|
|
registration_number - String
|
|
company_logo_url - String
|
|
primary_contact_name - String
|
|
primary_contact_phone - String
|
|
primary_contact_id_front_url - String
|
|
primary_contact_id_back_url - String
|
|
primary_contact_id_number - String
|
|
primary_contact_passport_photo_url - String
|
|
primary_contact_role - String
|
|
organization_subtype - String
|
|
organization_name - String
|
|
organization_email - String
|
|
organization_phone_number - String
|
|
certificate_of_registration_url - String
|
|
cr12_form_url - String
|
|
business_license_url - String
|
Example
{
"submitted_at": "2007-12-03T10:15:30Z",
"reviewed_at": "2007-12-03T10:15:30Z",
"reviewed_by": "xyz789",
"review_notes": "abc123",
"id_front_url": "xyz789",
"id_back_url": "abc123",
"id_number": "abc123",
"id_type": "abc123",
"passport_photo_url": "xyz789",
"tax_certificate_url": "abc123",
"tax_pin": "xyz789",
"incorporation_certificate_url": "xyz789",
"incorporation_number": "abc123",
"registration_number": "xyz789",
"company_logo_url": "abc123",
"primary_contact_name": "xyz789",
"primary_contact_phone": "abc123",
"primary_contact_id_front_url": "xyz789",
"primary_contact_id_back_url": "abc123",
"primary_contact_id_number": "abc123",
"primary_contact_passport_photo_url": "xyz789",
"primary_contact_role": "xyz789",
"organization_subtype": "abc123",
"organization_name": "xyz789",
"organization_email": "abc123",
"organization_phone_number": "abc123",
"certificate_of_registration_url": "abc123",
"cr12_form_url": "abc123",
"business_license_url": "abc123"
}
KYCStatusEnum
Description
Know Your Customer verification status
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"NOT_SUBMITTED"
LeadGenerationNamespace
Fields
| Field Name | Description |
|---|---|
createLeadGeneration - PartnerProfileObjectType!
|
Create Lead Generation |
Arguments
|
|
updateLeadGeneration - PartnerProfileObjectType!
|
Update Lead Generation |
Arguments
|
|
leadGenerationOffset - OffsetPaginatedPartnerProfiles!
|
Get all Lead Generation partners with offset pagination |
Arguments
|
|
Example
{
"createLeadGeneration": PartnerProfileObjectType,
"updateLeadGeneration": PartnerProfileObjectType,
"leadGenerationOffset": OffsetPaginatedPartnerProfiles
}
LeadsScreensGraphQL
Example
{
"customer": false,
"product": false,
"consent": true,
"termsAndConditions": false,
"kycDocuments": false,
"creditQuestions": false
}
LivenessCheckTransactionCursorPaginatedResponse
Description
Cursor paginated liveness check transactions response
Fields
| Field Name | Description |
|---|---|
data - [LivenessCheckTransactionDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [LivenessCheckTransactionDto],
"pagination": CursorPaginationMetadata
}
LivenessCheckTransactionDto
Description
Liveness check transaction record
Fields
| Field Name | Description |
|---|---|
id - ID
|
Unique identifier |
job_id - String!
|
Job ID from liveness provider |
target_id - String!
|
Target ID (customer/prospect) |
link - String
|
Liveness verification link |
provider - LivenessProvider
|
Liveness provider |
status - LivenessStatus
|
Liveness check status |
success - Boolean!
|
Whether liveness check was successful |
error_message - String
|
Error message if failed |
image_links - LivenessImageLinksType
|
Image links |
results - LivenessResultsType
|
Liveness results |
info - LivenessInfoType
|
Extracted info |
metadata - JSON
|
Additional metadata |
createdAt - DateTime
|
Record creation timestamp |
updatedAt - DateTime
|
Record update timestamp |
Example
{
"id": "4",
"job_id": "xyz789",
"target_id": "xyz789",
"link": "abc123",
"provider": "SUMSUB",
"status": "PENDING",
"success": false,
"error_message": "xyz789",
"image_links": LivenessImageLinksType,
"results": LivenessResultsType,
"info": LivenessInfoType,
"metadata": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
LivenessCheckTransactionFilterInput
Description
Filter input for querying liveness check transactions
Fields
| Input Field | Description |
|---|---|
target_id - String
|
Filter by target ID |
job_id - String
|
Filter by job ID |
provider - LivenessProvider
|
Filter by provider |
status - LivenessStatus
|
Filter by status |
success - Boolean
|
Filter by success status |
Example
{
"target_id": "abc123",
"job_id": "xyz789",
"provider": "SUMSUB",
"status": "PENDING",
"success": false
}
LivenessCheckTransactionOffsetPaginatedResponse
Description
Offset paginated liveness check transactions response
Fields
| Field Name | Description |
|---|---|
data - [LivenessCheckTransactionDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [LivenessCheckTransactionDto],
"metadata": OffsetPaginationMetadata
}
LivenessImageLinksType
LivenessInfoType
Description
Liveness check info extracted from documents
Example
{
"first_name": "abc123",
"last_name": "abc123",
"middle_name": "xyz789",
"gender": "abc123",
"dob": "abc123",
"country": "abc123",
"id_number": "abc123",
"id_type": "xyz789"
}
LivenessMethod
Description
Method by which the liveness check link is delivered
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"SELF"
LivenessProvider
Description
Liveness check provider
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"SUMSUB"
LivenessResultsType
Description
Liveness check results
Fields
| Field Name | Description |
|---|---|
document_check - String
|
Document check result |
liveness_check - String
|
Liveness check result |
register_selfie - String
|
Register selfie result |
verify_document - String
|
Verify document result |
selfie_to_id_card_compare - String
|
Selfie to ID card comparison result |
human_review_document_check - String
|
Human review document check result |
human_review_liveness_check - String
|
Human review liveness check result |
Example
{
"document_check": "xyz789",
"liveness_check": "xyz789",
"register_selfie": "xyz789",
"verify_document": "xyz789",
"selfie_to_id_card_compare": "abc123",
"human_review_document_check": "abc123",
"human_review_liveness_check": "xyz789"
}
LivenessStatus
Description
Liveness check status
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
LocationDetailsInput
Example
{
"country": "abc123",
"county": "abc123",
"sub_county": "xyz789",
"ward": "abc123",
"town": "abc123",
"landmark": "abc123",
"gps_coordinates": GpsCoordinatesInput
}
LocationDetailsObjectType
Example
{
"country": "abc123",
"county": "xyz789",
"sub_county": "abc123",
"ward": "abc123",
"town": "xyz789",
"landmark": "xyz789",
"gps_coordinates": GPSCoordinatesObjectType
}
LocationTypeEnum
Description
Type of inventory location
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"TRANSIT_INBOUND"
LocationsConfigType
LockDeviceInput
LockingSystemCondition
Description
Locking system condition observed during ops device assessment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"OK"
ManuallyReconcilePaymentInput
MarkFailedDeliveryInput
Fields
| Input Field | Description |
|---|---|
delivery_id - ID!
|
|
delivery_status - DeliveryStatusEnum!
|
|
failed_delivery_reason - String
|
|
location_id - ID
|
Example
{
"delivery_id": "4",
"delivery_status": "PENDING",
"failed_delivery_reason": "abc123",
"location_id": 4
}
MediaAssetDto
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
|
domain - MediaAssetsDomain!
|
|
type - MediaAssetType!
|
|
target - String!
|
|
target_id - String!
|
|
password - String
|
|
url - String!
|
|
name - String!
|
|
content_type - String!
|
|
storage_provider - MediaAssetProvider!
|
|
raw - JSON
|
|
createdAt - DateTime!
|
|
updatedAt - DateTime!
|
Example
{
"_id": "4",
"domain": "AUDIT",
"type": "SELFIE",
"target": "abc123",
"target_id": "abc123",
"password": "abc123",
"url": "xyz789",
"name": "xyz789",
"content_type": "abc123",
"storage_provider": "S3",
"raw": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
MediaAssetFilterInput
MediaAssetProvider
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"S3"
MediaAssetType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"SELFIE"
MediaAssetsDomain
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AUDIT"
MoShopNamespace
Fields
| Field Name | Description |
|---|---|
createShopOwner - PartnerProfileObjectType!
|
Create Shop Owner |
Arguments
|
|
createShopAttendant - InternalStaffProfileObjectType!
|
Create Shop Attendant |
Arguments
|
|
updateShopOwner - PartnerProfileObjectType!
|
Update Shop Owner |
Arguments
|
|
updateShopAttendant - PartnerProfileObjectType!
|
Update Shop Attendant |
Arguments
|
|
shopsOffset - OffsetPaginatedPartnerProfiles!
|
Get shops with offset pagination |
Arguments
|
|
shopsCursor - CursorPaginatedPartnerProfiles!
|
Get shops with cursor pagination |
Arguments
|
|
Example
{
"createShopOwner": PartnerProfileObjectType,
"createShopAttendant": InternalStaffProfileObjectType,
"updateShopOwner": PartnerProfileObjectType,
"updateShopAttendant": PartnerProfileObjectType,
"shopsOffset": OffsetPaginatedPartnerProfiles,
"shopsCursor": CursorPaginatedPartnerProfiles
}
MobileMoneyRequestInput
Example
{
"amount": 987.65,
"currency": "abc123",
"reference": "abc123",
"customer_id": "abc123",
"wallet_id": "xyz789",
"description": "xyz789",
"metadata": {},
"phoneNumber": "abc123",
"accountReference": "xyz789"
}
ModelCreditDecision
Description
Model credit decision outcome
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ALLGO"
MoveGroupInput
MoveLoanPaymentsInput
Example
{
"oldLoanId": 4,
"newLoanId": 4,
"reason": "xyz789",
"isSystemAction": false
}
MoveLoanPaymentsResultType
NormalHighDepositEnum
Description
Whether the application uses a normal or high deposit
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"NORMAL"
NormalHighDepositFilterInput
Fields
| Input Field | Description |
|---|---|
eq - NormalHighDepositEnum
|
|
ne - NormalHighDepositEnum
|
|
in - [NormalHighDepositEnum!]
|
|
notIn - [NormalHighDepositEnum!]
|
Example
{"eq": "NORMAL", "ne": "NORMAL", "in": ["NORMAL"], "notIn": ["NORMAL"]}
OfferStatusEnum
Description
Status of offer or promotion
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"DRAFT"
OfferTypeEnum
Description
Type of offer or promotion
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PERCENTAGE"
OfflineAgentNamespace
Fields
| Field Name | Description |
|---|---|
createOfflineAgent - PartnerProfileObjectType!
|
Create Offline Agent |
Arguments
|
|
updateOfflineAgent - PartnerProfileObjectType!
|
Update Offline Agent |
Arguments
|
|
offlineAgentsOffset - OffsetPaginatedPartnerProfiles!
|
Get all Offline Agents with offset pagination |
Arguments
|
|
Example
{
"createOfflineAgent": PartnerProfileObjectType,
"updateOfflineAgent": PartnerProfileObjectType,
"offlineAgentsOffset": OffsetPaginatedPartnerProfiles
}
OffsetPaginatedAgentProfiles
Fields
| Field Name | Description |
|---|---|
data - [AgentProfileObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [AgentProfileObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedApplicationCallDetails
Fields
| Field Name | Description |
|---|---|
data - [ApplicationCallDetailsType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ApplicationCallDetailsType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedApplications
Fields
| Field Name | Description |
|---|---|
data - [ApplicationEntityGraphQL!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ApplicationEntityGraphQL],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedAuditLogs
Fields
| Field Name | Description |
|---|---|
data - [AuditLogObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [AuditLogObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedCallDispositions
Fields
| Field Name | Description |
|---|---|
data - [CallDispositionType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CallDispositionType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedCategories
Fields
| Field Name | Description |
|---|---|
data - [CategoryObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CategoryObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedCohorts
Fields
| Field Name | Description |
|---|---|
data - [CohortObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CohortObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedCommissionOverrides
Fields
| Field Name | Description |
|---|---|
data - [CommissionOverrideObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CommissionOverrideObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedCommissions
Fields
| Field Name | Description |
|---|---|
data - [CommissionObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CommissionObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedCommunications
Fields
| Field Name | Description |
|---|---|
data - [CommunicationObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [CommunicationObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedConditions
Fields
| Field Name | Description |
|---|---|
data - [ConditionObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ConditionObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedDeliveries
Fields
| Field Name | Description |
|---|---|
data - [DeliveryObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [DeliveryObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedDeliveryCalls
Fields
| Field Name | Description |
|---|---|
data - [DeliveryCallObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [DeliveryCallObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedDeliveryItems
Fields
| Field Name | Description |
|---|---|
data - [DeliveryItemObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [DeliveryItemObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedFlashSaleItems
Fields
| Field Name | Description |
|---|---|
data - [FlashSaleItemObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [FlashSaleItemObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedFlashSales
Fields
| Field Name | Description |
|---|---|
data - [FlashSaleObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [FlashSaleObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedGroups
Fields
| Field Name | Description |
|---|---|
data - [GroupObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [GroupObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedInternalStaffProfiles
Fields
| Field Name | Description |
|---|---|
data - [InternalStaffProfileObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [InternalStaffProfileObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedInventory
Fields
| Field Name | Description |
|---|---|
data - [InventoryObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [InventoryObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedInventoryAllocations
Fields
| Field Name | Description |
|---|---|
data - [InventoryAllocationObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [InventoryAllocationObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedInventoryLocations
Fields
| Field Name | Description |
|---|---|
data - [InventoryLocationObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [InventoryLocationObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedLoanContracts
Fields
| Field Name | Description |
|---|---|
data - [LoanContractDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [LoanContractDto],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedLoanDelinquencyTracking
Fields
| Field Name | Description |
|---|---|
data - [LoanDelinquencyTrackingDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [LoanDelinquencyTrackingDto],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedLoanInstallments
Fields
| Field Name | Description |
|---|---|
data - [LoanInstallmentDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [LoanInstallmentDto],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedLoanLedger
Fields
| Field Name | Description |
|---|---|
data - [LoanLedgerDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [LoanLedgerDto],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedLoanOverrides
Fields
| Field Name | Description |
|---|---|
data - [LoanOverrideDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [LoanOverrideDto],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedMediaAssets
Fields
| Field Name | Description |
|---|---|
data - [MediaAssetDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [MediaAssetDto],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedOrderItems
Fields
| Field Name | Description |
|---|---|
data - [OrderItemObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [OrderItemObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedOrders
Fields
| Field Name | Description |
|---|---|
data - [OrderObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [OrderObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedPartnerProfiles
Fields
| Field Name | Description |
|---|---|
data - [PartnerProfileObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PartnerProfileObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedPaymentAdjustments
Fields
| Field Name | Description |
|---|---|
data - [PaymentAdjustmentsEntityType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PaymentAdjustmentsEntityType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedPaymentAllocations
Fields
| Field Name | Description |
|---|---|
data - [PaymentAllocationDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PaymentAllocationDto],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedPaymentStatement
Fields
| Field Name | Description |
|---|---|
data - [PaymentStatementEntryDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PaymentStatementEntryDto],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedPricePlans
Fields
| Field Name | Description |
|---|---|
data - [PricePlanObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PricePlanObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedProductOffers
Fields
| Field Name | Description |
|---|---|
data - [ProductOfferObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ProductOfferObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedProducts
Fields
| Field Name | Description |
|---|---|
data - [ProductObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ProductObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedRawRisk
Fields
| Field Name | Description |
|---|---|
data - [RawRiskDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [RawRiskDto],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedRepairs
Fields
| Field Name | Description |
|---|---|
data - [RepairObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [RepairObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedResubmissions
Fields
| Field Name | Description |
|---|---|
data - [ApplicationResubmissionGraphQL!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ApplicationResubmissionGraphQL],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedReturns
Fields
| Field Name | Description |
|---|---|
data - [ReturnsGraphQL!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ReturnsGraphQL],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedRoles
Fields
| Field Name | Description |
|---|---|
data - [RoleObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [RoleObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedSales
Fields
| Field Name | Description |
|---|---|
data - [SalesObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [SalesObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedSellerCatalog
Fields
| Field Name | Description |
|---|---|
data - [SellerCatalogObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [SellerCatalogObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedSellerTiers
Fields
| Field Name | Description |
|---|---|
data - [SellerTierObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [SellerTierObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedSellers
Fields
| Field Name | Description |
|---|---|
data - [SellerObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [SellerObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedSkus
Fields
| Field Name | Description |
|---|---|
data - [SkuObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [SkuObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedUsers
Fields
| Field Name | Description |
|---|---|
data - [UserObjectType!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [UserObjectType],
"metadata": OffsetPaginationMetadata
}
OffsetPaginatedValidationRecords
Fields
| Field Name | Description |
|---|---|
data - [ValidationRecordGraphQLEntity!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [ValidationRecordGraphQLEntity],
"metadata": OffsetPaginationMetadata
}
OffsetPaginationInputType
Fields
| Input Field | Description |
|---|---|
page - Int
|
Page number (1-indexed). Default = 1 |
perPage - Int
|
Number of items per page. Default = 20 |
sortField - String
|
Field to sort by |
sortDirection - SortOrder
|
Sort direction. Default = DESC |
rangeField - String
|
Field to apply date range filter |
startDate - DateTime
|
Start date for range filter |
endDate - DateTime
|
End date for range filter |
Example
{
"page": 123,
"perPage": 987,
"sortField": "abc123",
"sortDirection": "ASC",
"rangeField": "xyz789",
"startDate": "2007-12-03T10:15:30Z",
"endDate": "2007-12-03T10:15:30Z"
}
OffsetPaginationMetadata
OnlineAgentNamespace
Fields
| Field Name | Description |
|---|---|
createOnlineAgent - PartnerProfileObjectType!
|
Create Online Agent |
Arguments
|
|
createSuperAgent - PartnerProfileObjectType!
|
Create Super Agent |
Arguments
|
|
updateOnlineAgent - PartnerProfileObjectType!
|
Update Online Agent |
Arguments
|
|
updateSuperAgent - PartnerProfileObjectType!
|
Update Super Agent |
Arguments
|
|
upgradeOnlineAgentToSuperAgent - PartnerProfileObjectType!
|
Upgrade Online Agent to Super Agent |
Arguments
|
|
onlineAgentsOffset - OffsetPaginatedPartnerProfiles!
|
Get all Online Agents with offset pagination |
Arguments
|
|
superAgentsOffset - OffsetPaginatedPartnerProfiles!
|
Get all Super Agents with offset pagination |
Arguments
|
|
Example
{
"createOnlineAgent": PartnerProfileObjectType,
"createSuperAgent": PartnerProfileObjectType,
"updateOnlineAgent": PartnerProfileObjectType,
"updateSuperAgent": PartnerProfileObjectType,
"upgradeOnlineAgentToSuperAgent": PartnerProfileObjectType,
"onlineAgentsOffset": OffsetPaginatedPartnerProfiles,
"superAgentsOffset": OffsetPaginatedPartnerProfiles
}
OperationalRoleEnum
Description
Operational roles within the organization
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"SALES_FORCE_MANAGER"
OperationsDetailsType
Fields
| Field Name | Description |
|---|---|
operations_user_id - String
|
|
status - OperationsStatus
|
|
operations_notes - String
|
|
repair_cost - Float
|
|
device_condition - DeviceConditionGrade
|
|
locking_system_condition - LockingSystemCondition
|
|
device_unlock_password - String
|
|
decided_at - DateTime
|
Example
{
"operations_user_id": "xyz789",
"status": "COMPLETED",
"operations_notes": "abc123",
"repair_cost": 123.45,
"device_condition": "GRADE_A",
"locking_system_condition": "OK",
"device_unlock_password": "abc123",
"decided_at": "2007-12-03T10:15:30Z"
}
OperationsStatus
Description
Status of the operations review
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"COMPLETED"
OrganizationDetailsDto
Fields
| Field Name | Description |
|---|---|
trading_name - String
|
Organization trading name |
organization_type - String
|
Organization type (LLC, Corporation, etc.) |
registration_date - String
|
Registration date in ISO 8601 format |
tax_id - String
|
Tax identification number |
industry_sector - String
|
Industry sector |
number_of_employees - Float
|
Number of employees |
application_id - String
|
Application ID |
customer_source - String
|
Customer source |
customer_source_id - String
|
Customer source ID |
Example
{
"trading_name": "xyz789",
"organization_type": "xyz789",
"registration_date": "xyz789",
"tax_id": "abc123",
"industry_sector": "abc123",
"number_of_employees": 987.65,
"application_id": "xyz789",
"customer_source": "xyz789",
"customer_source_id": "xyz789"
}
OrganizationDetailsInput
Example
{
"trading_name": "xyz789",
"organization_type": "abc123",
"registration_date": "abc123",
"tax_id": "abc123",
"industry_sector": "xyz789",
"number_of_employees": 123,
"application_id": "abc123",
"customer_source": "xyz789",
"customer_source_id": "abc123"
}
OthersValidationCheckInput
Fields
| Input Field | Description |
|---|---|
applicationId - ID!
|
|
type - ValidationCheckType!
|
|
iprsGatewayType - IprsPlatform
|
|
justification - String!
|
Reason for running this check |
Example
{
"applicationId": "4",
"type": "CUSTOMER",
"iprsGatewayType": "TRANSUNION",
"justification": "xyz789"
}
OtpDetailGraphQL
Example
{
"otpCreatedAt": "2007-12-03T10:15:30Z",
"otpVerifiedAt": "2007-12-03T10:15:30Z",
"requesting_sale_agentId": "xyz789",
"customer_phone_number": "abc123"
}
PatchUpdateOptionsInput
Fields
| Input Field | Description |
|---|---|
correction - String
|
Correction type identifier (e.g. cash-only, id-correction) |
skipEvents - Boolean
|
Skip emitting events after update. Default = false |
justification - String
|
Reason or justification for this update |
updateType - CreditUpdateType
|
Type of update being performed (UPDATE_APPLICATION or UPDATE_APPLICATION_STATUS) |
Example
{
"correction": "abc123",
"skipEvents": false,
"justification": "abc123",
"updateType": "VALIDATION"
}
PerformReturnsActionInput
Description
Input for performing an action on a returns request
Fields
| Input Field | Description |
|---|---|
action - ReturnsAction!
|
The action to perform |
payload - ReturnsActionPayloadInput
|
Action-specific payload |
Example
{"action": "SUBMIT", "payload": ReturnsActionPayloadInput}
PerformanceMetricsInput
Example
{
"response_time_hours": 987.65,
"fulfillment_rate": 123.45,
"return_rate": 987.65,
"customer_satisfaction": 123.45
}
PermissionActionMetaType
Description
Metadata for a single permission action
Example
{
"value": "xyz789",
"label": "xyz789",
"description": "xyz789"
}
PermissionCatalogType
Description
Full catalog of available resources and actions — use this to build a permission editor UI
Fields
| Field Name | Description |
|---|---|
resources - [PermissionResourceMetaType!]!
|
All permission resources with labels, descriptions, and valid actions |
actions - [PermissionActionMetaType!]!
|
All permission actions with labels and descriptions |
Example
{
"resources": [PermissionResourceMetaType],
"actions": [PermissionActionMetaType]
}
PermissionResourceMetaType
Description
Metadata for a single permission resource
Fields
| Field Name | Description |
|---|---|
value - String!
|
Resource identifier used in permission grants (e.g. onboarding, stock:mophones) |
label - String!
|
Human-readable label for the resource |
description - String!
|
Description of what this resource covers |
applicableActions - [String!]!
|
Actions that are meaningful for this resource — constrains the UI to valid combinations |
Example
{
"value": "abc123",
"label": "abc123",
"description": "abc123",
"applicableActions": ["xyz789"]
}
PhoneCheckType
Description
Type of phone verification check
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"UNKNOWN"
PhoneLookupPlatform
Description
Phone lookup provider platform
Values
| Enum Value | Description |
|---|---|
|
|
Example
"MPESA"
PhoneVerificationTransactionCursorPaginatedResponse
Description
Cursor paginated phone verification transactions response
Fields
| Field Name | Description |
|---|---|
data - [PhoneVerificationTransactionDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PhoneVerificationTransactionDto],
"pagination": CursorPaginationMetadata
}
PhoneVerificationTransactionDto
Description
Phone verification transaction record
Fields
| Field Name | Description |
|---|---|
_id - ID
|
Unique identifier |
status - Boolean!
|
Verification status |
country_iso - String!
|
Country ISO code |
provider - PhoneLookupPlatform!
|
Phone lookup provider |
phone_number - String
|
Phone number being verified |
target_id - String!
|
Target ID (customer/prospect) |
customer_name - String
|
Customer name from verification |
transaction_id - String
|
Transaction ID from provider |
failure_reason - String
|
Reason for failure |
registered - Boolean!
|
Whether phone is registered |
failed_at - DateTime
|
Timestamp when verification failed |
completed_at - DateTime
|
Timestamp when verification completed |
manual - Boolean!
|
Whether this was a manual verification |
check - PhoneCheckType!
|
Type of verification check |
record_status - VerificationRecordStatus
|
Cache freshness state of this record |
createdAt - DateTime
|
Record creation timestamp |
Example
{
"_id": "4",
"status": false,
"country_iso": "xyz789",
"provider": "MPESA",
"phone_number": "abc123",
"target_id": "abc123",
"customer_name": "xyz789",
"transaction_id": "abc123",
"failure_reason": "abc123",
"registered": true,
"failed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"manual": false,
"check": "UNKNOWN",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
PhoneVerificationTransactionFilterInput
Description
Filter input for querying phone verification transactions
Fields
| Input Field | Description |
|---|---|
target_id - String
|
Filter by target ID |
phone_number - String
|
Filter by phone number |
provider - PhoneLookupPlatform
|
Filter by provider |
check - PhoneCheckType
|
Filter by check type |
status - Boolean
|
Filter by verification status |
registered - Boolean
|
Filter by registration status |
record_status - VerificationRecordStatus
|
Filter by cache freshness state |
Example
{
"target_id": "xyz789",
"phone_number": "abc123",
"provider": "MPESA",
"check": "UNKNOWN",
"status": true,
"registered": false,
"record_status": "ACTIVE"
}
PhoneVerificationTransactionOffsetPaginatedResponse
Description
Offset paginated phone verification transactions response
Fields
| Field Name | Description |
|---|---|
data - [PhoneVerificationTransactionDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [PhoneVerificationTransactionDto],
"metadata": OffsetPaginationMetadata
}
PhysicalState
Description
Physical state of inventory item
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"IN_STOCK"
PlatformUnlockSummaryType
PostingTagEnum
Description
Specific tag identifying the nature of the adjustment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"STAFF_SALE_DISCOUNT"
PostingTypeEnum
Description
Type of posting for the adjustment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"ADJUSTMENT_POST"
PriceRestrictionType
ProcessExemptionInput
Fields
| Input Field | Description |
|---|---|
exemption_type - ExemptionTypeEnum!
|
|
justification - String!
|
|
archive - Boolean
|
Example
{
"exemption_type": "TERMS_ACCEPTANCE",
"justification": "abc123",
"archive": false
}
ProcessKycDocumentsInput
Example
{
"applicationId": 4,
"mpesaStatement": Upload,
"mpesaStatementPassword": "abc123",
"bankStatement": Upload,
"bankStatementPassword": "xyz789",
"kraPin": "xyz789",
"alternativePhoneNumber": "abc123",
"gateStatus": "xyz789",
"proceedWithoutDocument": false
}
ProcessKycImagesInput
ProcessKycImagesResult
Fields
| Field Name | Description |
|---|---|
applicationId - ID!
|
|
idFront - KycDocumentType
|
|
idBack - KycDocumentType
|
|
selfie - KycDocumentType
|
Example
{
"applicationId": 4,
"idFront": KycDocumentType,
"idBack": KycDocumentType,
"selfie": KycDocumentType
}
ProcessReferralResult
ProcessReferralRewardsInput
Fields
| Input Field | Description |
|---|---|
referral_id - ID!
|
|
processed_by - String!
|
|
force_processing - Boolean
|
|
airtime_distribution_mode - AirtimeDistributionModeEnum
|
Example
{
"referral_id": 4,
"processed_by": "xyz789",
"force_processing": false,
"airtime_distribution_mode": "MANUAL"
}
ProofOfDelivery
Example
{
"images": ["xyz789"],
"signature": "xyz789",
"otp": "xyz789",
"submitted_otp": "xyz789",
"otp_expiry_time": "xyz789",
"match": true,
"payment_reference": "xyz789",
"failed_delivery_reason": "xyz789"
}
ProviderInfo
PublishConfigInput
Description
Publish versioned config input
Fields
| Input Field | Description |
|---|---|
key - String!
|
|
client_id - String
|
|
platform - ConfigPlatformEnum
|
|
version - Int
|
Specific version to publish, or latest draft if not specified |
Example
{
"key": "abc123",
"client_id": "abc123",
"platform": "ALL",
"version": 123
}
PublishDraftInput
PurchaseMode
Description
Purchase mode for the product
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CASH"
PurchaseModeFilterInput
Fields
| Input Field | Description |
|---|---|
eq - PurchaseMode
|
|
ne - PurchaseMode
|
|
in - [PurchaseMode!]
|
|
notIn - [PurchaseMode!]
|
Example
{"eq": "CASH", "ne": "CASH", "in": ["CASH"], "notIn": ["CASH"]}
PurchaseTypeEnum
Description
Type of payment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CASH"
PushDataInput
Example
{
"targetType": "USER",
"targetId": "abc123",
"title": "xyz789",
"body": "abc123",
"image": "xyz789",
"clickAction": "abc123",
"data": {}
}
PushDataObjectType
Example
{
"targetType": "USER",
"targetId": "xyz789",
"title": "abc123",
"body": "xyz789",
"image": "abc123",
"clickAction": "abc123",
"data": {}
}
PushTargetType
Description
Target type for push notifications
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"USER"
QueueAnalyticsExplainType
Fields
| Field Name | Description |
|---|---|
queue - String!
|
The queue being analysed |
slaThresholdMinutes - Float!
|
SLA threshold used for breach calculations, in minutes |
agentTargetCapacity - Int!
|
Target active applications per agent used for capacity utilization |
agingBucketBoundaries - String!
|
Aging bucket boundaries used |
states - QueueStateExplainType!
|
Human-readable explanation of each queue state |
Example
{
"queue": "xyz789",
"slaThresholdMinutes": 123.45,
"agentTargetCapacity": 987,
"agingBucketBoundaries": "abc123",
"states": QueueStateExplainType
}
QueueAnalyticsType
Fields
| Field Name | Description |
|---|---|
activeApplications - Int!
|
waiting + ongoing |
pendingApplications - Int!
|
waiting only |
completedApplications - Int!
|
|
queueStateCounts - QueueStateCountsType!
|
|
averageWaitTime - Float!
|
Average wait time in milliseconds |
medianWaitTime - Float!
|
Median wait time in milliseconds |
averageProcessingTime - Float!
|
Average time from when an agent started working an application to when it was completed, in milliseconds. Calculated over completed applications within the time frame that have both a started and completion timestamp. |
medianProcessingTime - Float!
|
Median processing time in milliseconds |
p95WaitTime - Float!
|
P95 wait time in milliseconds |
p95ProcessingTime - Float!
|
P95 processing time in milliseconds |
slaBreachCount - Int!
|
Applications that exceeded the SLA wait-time threshold |
slaBreachRate - Float!
|
Percentage of active applications that breached SLA |
agingBuckets - AgingBucketType!
|
Distribution of waiting applications by age |
throughputRate - Float!
|
Completed applications per hour within the time frame |
inflowCount - Int!
|
Applications that entered the queue within the time frame |
workloadVariance - Float!
|
Standard deviation of active applications across agents |
totalAgents - Int!
|
|
engagedAgents - Int!
|
|
freeAgents - Int!
|
|
recommendedNextAgent - RecommendedAgentType
|
|
callActivity - CallActivityStatsType
|
Aggregate call activity from application_call_details for this queue + time frame (CREDIT_CALL queue only) |
explain - QueueAnalyticsExplainType!
|
Explains constants, thresholds, and state definitions used in this response |
Example
{
"activeApplications": 987,
"pendingApplications": 987,
"completedApplications": 987,
"queueStateCounts": QueueStateCountsType,
"averageWaitTime": 123.45,
"medianWaitTime": 987.65,
"averageProcessingTime": 987.65,
"medianProcessingTime": 987.65,
"p95WaitTime": 987.65,
"p95ProcessingTime": 123.45,
"slaBreachCount": 987,
"slaBreachRate": 123.45,
"agingBuckets": AgingBucketType,
"throughputRate": 123.45,
"inflowCount": 987,
"workloadVariance": 987.65,
"totalAgents": 987,
"engagedAgents": 987,
"freeAgents": 987,
"recommendedNextAgent": RecommendedAgentType,
"callActivity": CallActivityStatsType,
"explain": QueueAnalyticsExplainType
}
QueueApplicationsInput
Fields
| Input Field | Description |
|---|---|
queue - CreditQueue!
|
The queue to scope this request to |
startDate - String!
|
Start of the time frame (ISO 8601) |
endDate - String!
|
End of the time frame (ISO 8601) |
queueState - CreditQueueState
|
Filter by queue state (omit to return all active states) |
agentId - String
|
Filter by assigned agent ID |
Example
{
"queue": "SCORING",
"startDate": "abc123",
"endDate": "abc123",
"queueState": "WAITING",
"agentId": "abc123"
}
QueueScopeInput
Fields
| Input Field | Description |
|---|---|
queue - CreditQueue!
|
The queue to scope this request to |
startDate - String!
|
Start of the time frame (ISO 8601) |
endDate - String!
|
End of the time frame (ISO 8601) |
Example
{
"queue": "SCORING",
"startDate": "abc123",
"endDate": "abc123"
}
QueueStateCountsType
Example
{
"waiting": 123,
"ongoing": 123,
"completed": 123,
"resubmissions": 123,
"resubmissionsReady": 123
}
QueueStateExplainType
Fields
| Field Name | Description |
|---|---|
waiting - String!
|
What the WAITING state means for this queue |
ongoing - String!
|
What the ONGOING state means for this queue |
completed - String!
|
What the COMPLETED state means for this queue |
resubmissions - String
|
What the RESUBMISSIONS state means — waiting on customer (SCORING only) |
resubmissionsReady - String
|
What the RESUBMISSIONS_READY state means — agent committed, scorer must re-review (SCORING only) |
Example
{
"waiting": "xyz789",
"ongoing": "abc123",
"completed": "abc123",
"resubmissions": "xyz789",
"resubmissionsReady": "xyz789"
}
QueueWorkloadInput
Fields
| Input Field | Description |
|---|---|
queue - CreditQueue!
|
The queue to scope this request to |
startDate - String!
|
Start of the time frame (ISO 8601) |
endDate - String!
|
End of the time frame (ISO 8601) |
agentId - String
|
Narrow results to a single agent |
Example
{
"queue": "SCORING",
"startDate": "abc123",
"endDate": "xyz789",
"agentId": "xyz789"
}
QueueWorkloadResponseType
Fields
| Field Name | Description |
|---|---|
agents - [AgentWorkloadRowType!]!
|
|
totalAgents - Int!
|
|
engagedAgents - Int!
|
|
freeAgents - Int!
|
|
workloadVariance - Float!
|
Standard deviation of active applications across agents |
Example
{
"agents": [AgentWorkloadRowType],
"totalAgents": 987,
"engagedAgents": 987,
"freeAgents": 123,
"workloadVariance": 987.65
}
RawRiskDto
Fields
| Field Name | Description |
|---|---|
id - ID!
|
Unique risk record identifier |
block_type - RiskBlockTypeEnum!
|
Type of block |
blocked_value - String
|
The actual blocked value |
customer_id - String
|
Customer ID reference |
primary_id - String
|
Customer national ID |
primary_phone - String
|
Customer main phone number |
phone_numbers - [String!]
|
Additional customer phone numbers |
associated_phone_numbers - [String!]
|
NOK and non-customer phone numbers |
associated_ids - [String!]
|
NOK and non-customer IDs |
reason - String!
|
Reason for the block (e.g. fraud, default) |
description - String
|
Human-readable explanation |
severity - RiskSeverityEnum!
|
Block severity level |
restricted_actions - [RiskRestrictedActionEnum!]!
|
Actions restricted by this block |
is_active - Boolean!
|
Whether the block is currently active |
effective_from - DateTime
|
Block is in force from this time |
expires_at - DateTime
|
Expiry time; null means no expiry |
created_by - String
|
UUID of the agent who created this record |
removed_by - String
|
UUID of the agent who removed this record |
removed_at - DateTime
|
When the record was deactivated |
removal_reason - String
|
Reason for removal |
created_at - DateTime!
|
Record creation timestamp |
updated_at - DateTime!
|
Record last update timestamp |
customer - RawCustomersDto
|
|
latestApplication - ApplicationEntityGraphQL
|
Example
{
"id": "4",
"block_type": "CUSTOMER",
"blocked_value": "xyz789",
"customer_id": "xyz789",
"primary_id": "abc123",
"primary_phone": "xyz789",
"phone_numbers": ["abc123"],
"associated_phone_numbers": ["xyz789"],
"associated_ids": ["xyz789"],
"reason": "xyz789",
"description": "abc123",
"severity": "LOW",
"restricted_actions": ["BLOCK_NEW_CUSTOMERS"],
"is_active": false,
"effective_from": "2007-12-03T10:15:30Z",
"expires_at": "2007-12-03T10:15:30Z",
"created_by": "abc123",
"removed_by": "abc123",
"removed_at": "2007-12-03T10:15:30Z",
"removal_reason": "abc123",
"created_at": "2007-12-03T10:15:30Z",
"updated_at": "2007-12-03T10:15:30Z",
"customer": RawCustomersDto,
"latestApplication": ApplicationEntityGraphQL
}
RawRiskFilterInput
Fields
| Input Field | Description |
|---|---|
customer_id - StringFilterInput
|
|
primary_id - StringFilterInput
|
|
primary_phone - StringFilterInput
|
|
block_type - RiskBlockTypeFilterInput
|
|
severity - RiskSeverityFilterInput
|
|
reason - StringFilterInput
|
|
is_active - BooleanFilterInput
|
|
restricted_actions - RiskRestrictedActionFilterInput
|
|
associated_phone_numbers - StringArrayFilterInput
|
|
associated_ids - StringArrayFilterInput
|
|
created_at - DateFilterInput
|
|
updated_at - DateFilterInput
|
|
or - [RawRiskFilterInput!]
|
Logical OR — match records satisfying any of the given filters |
and - [RawRiskFilterInput!]
|
Logical AND — match records satisfying all of the given filters |
Example
{
"customer_id": StringFilterInput,
"primary_id": StringFilterInput,
"primary_phone": StringFilterInput,
"block_type": RiskBlockTypeFilterInput,
"severity": RiskSeverityFilterInput,
"reason": StringFilterInput,
"is_active": BooleanFilterInput,
"restricted_actions": RiskRestrictedActionFilterInput,
"associated_phone_numbers": StringArrayFilterInput,
"associated_ids": StringArrayFilterInput,
"created_at": DateFilterInput,
"updated_at": DateFilterInput,
"or": [RawRiskFilterInput],
"and": [RawRiskFilterInput]
}
RawWalletTransactionsDto
Fields
| Field Name | Description |
|---|---|
wallet_transaction_id - ID!
|
Unique wallet transaction identifier |
wallet_id - ID!
|
Wallet ID this transaction belongs to |
customer_id - ID!
|
Customer ID this transaction belongs to |
sale_id - ID
|
Associated sale ID |
wallet_transaction_ref_id - ID
|
Reference transaction ID |
wallet_transaction_type - WalletTransactionTypeEnum!
|
Transaction type |
wallet_transaction_sub_type - WalletTransactionSubTypeEnum!
|
Transaction sub-type |
wallet_transaction_amount - Float!
|
Transaction amount |
wallet_transaction_balance_before - Float!
|
Balance before transaction |
wallet_transaction_balance_after - Float!
|
Balance after transaction |
wallet_transaction_days_value - Float
|
Days value of transaction |
wallet_transaction_points_value - Float
|
Points value of transaction |
wallet_transaction_status - WalletTransactionStatusEnum!
|
Transaction status |
reference - String
|
Transaction reference |
wallet_transaction_description - String
|
Transaction description |
wallet_transaction_metadata - JSON
|
Additional transaction metadata |
wallet_transaction_created_at - DateTime!
|
Transaction creation timestamp |
wallet_transaction_updated_at - DateTime!
|
Transaction last update timestamp |
wallet_transaction_completed_at - DateTime
|
Transaction completion timestamp |
Example
{
"wallet_transaction_id": "4",
"wallet_id": 4,
"customer_id": "4",
"sale_id": "4",
"wallet_transaction_ref_id": 4,
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 123.45,
"wallet_transaction_balance_before": 123.45,
"wallet_transaction_balance_after": 123.45,
"wallet_transaction_days_value": 123.45,
"wallet_transaction_points_value": 123.45,
"wallet_transaction_status": "PENDING",
"reference": "xyz789",
"wallet_transaction_description": "xyz789",
"wallet_transaction_metadata": {},
"wallet_transaction_created_at": "2007-12-03T10:15:30Z",
"wallet_transaction_updated_at": "2007-12-03T10:15:30Z",
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
ReallocateRepairSalesInput
Fields
| Input Field | Description |
|---|---|
saleIds - [String!]!
|
|
reason - String!
|
|
dryRun - Boolean
|
Example
{
"saleIds": ["xyz789"],
"reason": "xyz789",
"dryRun": false
}
ReallocateRepairSalesResultType
Fields
| Field Name | Description |
|---|---|
dry_run - Boolean!
|
|
reallocated - [RepairSaleReallocationResultType!]!
|
|
skipped_sale_ids - [String!]!
|
|
reallocated_count - Float!
|
|
skipped_count - Float!
|
|
total_reallocated - Float!
|
|
enqueue_failed_sale_ids - [String!]!
|
Example
{
"dry_run": false,
"reallocated": [RepairSaleReallocationResultType],
"skipped_sale_ids": ["xyz789"],
"reallocated_count": 123.45,
"skipped_count": 987.65,
"total_reallocated": 123.45,
"enqueue_failed_sale_ids": ["abc123"]
}
RecalculateGapAnalysisInput
RecommendedAgentType
ReferralCodeValidationResult
ReferralRewardStatusEnum
Description
Status of referral reward processing
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
ReferralStatusEnum
Description
Status of a referral relationship
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"INCOMPLETE"
RefreshTokenInput
RejectCustomerReferralInput
RemoveAgentFromCohortInput
Fields
| Input Field | Description |
|---|---|
cohort_id - String!
|
|
agent_profile_ids - [String!]!
|
|
removal_reason - String
|
|
removal_notes - String
|
|
removed_by - String!
|
Example
{
"cohort_id": "abc123",
"agent_profile_ids": ["abc123"],
"removal_reason": "abc123",
"removal_notes": "xyz789",
"removed_by": "xyz789"
}
RemoveTrainerFromCohortInput
RepaymentTypeEnum
Description
Frequency of loan repayments
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"DAILY"
RequestGracePeriodInput
RequestOtpInput
RequestOtpResponse
ResendDuplicateOtpInput
Fields
| Input Field | Description |
|---|---|
applicationId - ID!
|
Example
{"applicationId": "4"}
ResolvedCustomerType
ResolvedDeviceType
ResolvedUserType
ResourcePermissionInput
Fields
| Input Field | Description |
|---|---|
resource - String!
|
Resource identifier (e.g. onboarding, orders, stock:mophones) |
actions - [String!]!
|
Actions to grant on this resource (read, create, update, delete, manage) |
Example
{
"resource": "xyz789",
"actions": ["xyz789"]
}
ResourcePermissionType
Fields
| Field Name | Description |
|---|---|
resource - String!
|
The resource this permission applies to (e.g. onboarding, orders, stock:mophones) |
actions - [String!]!
|
Allowed actions on this resource (read, create, update, delete, manage) |
Example
{
"resource": "xyz789",
"actions": ["xyz789"]
}
ReverseProgress
Description
OPS-facing reverse logistics progress stage
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"TO_BE_PICKED_UP"
ReviewKYCInput
Fields
| Input Field | Description |
|---|---|
profile_id - String!
|
|
action - KYCApprovalAction!
|
|
review_notes - String
|
|
reviewed_by - String
|
Example
{
"profile_id": "xyz789",
"action": "APPROVE",
"review_notes": "abc123",
"reviewed_by": "xyz789"
}
RevokeGracePeriodInput
RevokePaymentInput
Fields
| Input Field | Description |
|---|---|
payment_id - ID!
|
|
revocation_amount - Float!
|
|
reason_code - PaymentRevocationReasonCodeEnum!
|
|
reason_text - String!
|
|
idempotency_key - String!
|
Example
{
"payment_id": "4",
"revocation_amount": 987.65,
"reason_code": "OPERATOR_ERROR",
"reason_text": "xyz789",
"idempotency_key": "abc123"
}
RollbackConfigInput
Description
Rollback versioned config input
Fields
| Input Field | Description |
|---|---|
key - String!
|
|
client_id - String
|
|
platform - ConfigPlatformEnum
|
|
target_version - Int!
|
Example
{
"key": "xyz789",
"client_id": "abc123",
"platform": "ALL",
"target_version": 123
}
RoundRobinRerunResultType
ScheduleDataExportInput
Fields
| Input Field | Description |
|---|---|
exportName - String!
|
|
domain - DataExportDomain!
|
|
fileFormat - DataExportFileFormat
|
|
filters - JSON
|
|
dateRange - DataExportDateRangeInput
|
|
columnPreset - String
|
|
selectedColumnKeys - [String!]
|
Example
{
"exportName": "xyz789",
"domain": "INVENTORY",
"fileFormat": "XLSX",
"filters": {},
"dateRange": DataExportDateRangeInput,
"columnPreset": "xyz789",
"selectedColumnKeys": ["xyz789"]
}
SetAgentPermissionsInput
Fields
| Input Field | Description |
|---|---|
permissions - [ResourcePermissionInput!]!
|
Full replacement permission list for the agent type. Replaces all existing grants. |
Example
{"permissions": [ResourcePermissionInput]}
SetRoleConfigInput
Description
Create or update a role-scoped config
Fields
| Input Field | Description |
|---|---|
key - String!
|
|
value - JSON!
|
|
role_id - String!
|
|
category - ConfigCategory
|
|
value_type - ConfigSystemType
|
|
description - String
|
|
is_encrypted - Boolean
|
|
requires_validation - Boolean
|
Whether the config value should be validated against its JSON schema. Set to false to store arbitrary JSON without schema validation. Default = true |
Example
{
"key": "xyz789",
"value": {},
"role_id": "xyz789",
"category": "GENERAL",
"value_type": "STRING",
"description": "xyz789",
"is_encrypted": false,
"requires_validation": true
}
SetUserConfigInput
Description
Create or update a config for the current authenticated user
Fields
| Input Field | Description |
|---|---|
key - String!
|
|
value - JSON!
|
|
category - ConfigCategory
|
|
value_type - ConfigSystemType
|
|
description - String
|
|
is_encrypted - Boolean
|
|
requires_validation - Boolean
|
Whether the config value should be validated against its JSON schema. Set to false to store arbitrary JSON without schema validation. Default = true |
Example
{
"key": "xyz789",
"value": {},
"category": "GENERAL",
"value_type": "STRING",
"description": "abc123",
"is_encrypted": true,
"requires_validation": true
}
SfmNamespace
Fields
| Field Name | Description |
|---|---|
createSFM - InternalStaffProfileObjectType!
|
Create SFM (Sales Force Manager) |
Arguments
|
|
createShopManager - InternalStaffProfileObjectType!
|
Create Shop Manager |
Arguments
|
|
createPartnerPromoter - InternalStaffProfileObjectType!
|
Create Partner Promoter |
Arguments
|
|
updateSFM - InternalStaffProfileObjectType!
|
Update SFM |
Arguments
|
|
updateShopManager - InternalStaffProfileObjectType!
|
Update Shop Manager |
Arguments
|
|
updatePartnerPromoter - InternalStaffProfileObjectType!
|
Update Partner Promoter |
Arguments
|
|
removePromoterPartners - InternalStaffProfileObjectType!
|
Detach partner owners from a partner promoter (clears assigned_promoter_id only) |
Arguments
|
|
transferPromoterPartners - InternalStaffProfileObjectType!
|
Transfer all assigned partner owners from one promoter to another |
transferSfmPartners - InternalStaffProfileObjectType!
|
Transfer all assigned partners from one SFM to another |
sfmStaffOffset - OffsetPaginatedInternalStaffProfiles!
|
Get all SFMs with offset pagination |
Arguments
|
|
Example
{
"createSFM": InternalStaffProfileObjectType,
"createShopManager": InternalStaffProfileObjectType,
"createPartnerPromoter": InternalStaffProfileObjectType,
"updateSFM": InternalStaffProfileObjectType,
"updateShopManager": InternalStaffProfileObjectType,
"updatePartnerPromoter": InternalStaffProfileObjectType,
"removePromoterPartners": InternalStaffProfileObjectType,
"transferPromoterPartners": InternalStaffProfileObjectType,
"transferSfmPartners": InternalStaffProfileObjectType,
"sfmStaffOffset": OffsetPaginatedInternalStaffProfiles
}
ShippingAddress
ShippingAddressInput
SimEntryType
SimLockInfoType
Fields
| Field Name | Description |
|---|---|
approvedSims - [SimEntryType!]!
|
|
unapprovedSims - [SimEntryType!]!
|
|
autoApproveNewSim - Boolean
|
Example
{
"approvedSims": [SimEntryType],
"unapprovedSims": [SimEntryType],
"autoApproveNewSim": false
}
SmsDataFilterInput
Description
Filter by SMS payload fields
Fields
| Input Field | Description |
|---|---|
to - StringFilterInput
|
Example
{"to": StringFilterInput}
SmsDataInput
SmsDataObjectType
SortOrder
Description
Sort direction for pagination
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ASC"
SpecPreferenceInput
SpecPreferenceObjectType
SplitReturnsCollectionPaymentInput
Fields
| Input Field | Description |
|---|---|
returnsRequestId - ID!
|
|
paymentId - ID
|
Payment id when already resolved from M-Pesa verification |
mpesaReference - String
|
M-Pesa confirmation code when paymentId is not provided |
salesAmount - Float!
|
Amount allocated to loan/arrears (SALES_LOAN split leg) |
repairsAmount - Float!
|
Amount allocated to repairs (REPAIRS split leg) |
Example
{
"returnsRequestId": 4,
"paymentId": "4",
"mpesaReference": "abc123",
"salesAmount": 987.65,
"repairsAmount": 987.65
}
SplitReturnsCollectionPaymentPayloadType
Example
{
"payment_id": 4,
"sales_adjustment_id": 4,
"repairs_adjustment_id": 4,
"swap_repair_clearance": {}
}
StatementTagEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CR"
StaticShopMetadataInput
Example
{
"shop_name": "abc123",
"shop_phone_number": "abc123",
"business_type": "xyz789",
"other_brands_sold": ["xyz789"],
"shop_size": "xyz789",
"is_branded": false,
"branding_date": "2007-12-03T10:15:30Z"
}
StaticShopMetadataObjectType
Example
{
"shop_name": "abc123",
"shop_phone_number": "abc123",
"business_type": "abc123",
"other_brands_sold": ["abc123"],
"shop_size": "abc123",
"is_branded": false,
"branding_date": "2007-12-03T10:15:30Z"
}
StatusCalculationInputType
Fields
| Input Field | Description |
|---|---|
loan_age_days - Float!
|
|
total_paid - Float!
|
|
upfront_payment - Float!
|
|
repayment_rate - Float!
|
|
repayment_type - RepaymentTypeEnum!
|
|
loan_status_override - LoanAccountStatusEnum
|
|
days_past_due - Float!
|
|
balance_due - Float!
|
|
device_returned - Boolean!
|
|
device_return_date - DateTime
|
|
opening_date - DateTime!
|
|
is_lost - Boolean!
|
Example
{
"loan_age_days": 987.65,
"total_paid": 987.65,
"upfront_payment": 123.45,
"repayment_rate": 987.65,
"repayment_type": "DAILY",
"loan_status_override": "NEW_ACTIVE",
"days_past_due": 123.45,
"balance_due": 123.45,
"device_returned": true,
"device_return_date": "2007-12-03T10:15:30Z",
"opening_date": "2007-12-03T10:15:30Z",
"is_lost": false
}
StatusCalculationResult
Fields
| Field Name | Description |
|---|---|
status - LoanAccountStatusEnum!
|
Example
{"status": "NEW_ACTIVE"}
StatusHistoryEntryType
Fields
| Field Name | Description |
|---|---|
from - ReturnsStatus!
|
|
to - ReturnsStatus!
|
|
action - String!
|
|
actor - String
|
|
actor_name - String
|
Resolved display name of the actor (populated by field resolver) |
actor_email - String
|
Resolved email of the actor (populated by field resolver) |
timestamp - DateTime!
|
Example
{
"from": "PENDING",
"to": "PENDING",
"action": "abc123",
"actor": "abc123",
"actor_name": "xyz789",
"actor_email": "abc123",
"timestamp": "2007-12-03T10:15:30Z"
}
StockOriginEnum
Description
Origin of inventory stock
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"INTERNATIONAL"
StockStatusNameEnum
Description
Detailed inventory stock status name
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ORDERED"
StockStatusTypeEnum
Description
Top-level inventory stock status type
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"INBOUND"
StockTypeEnum
Description
Ownership classification of inventory stock
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ONE_P"
String
Description
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"xyz789"
StringArrayFilterInput
Description
Filter operators for PostgreSQL varchar[] columns
Example
{
"containsAny": ["abc123"],
"containsAll": ["abc123"],
"containsLike": "abc123"
}
StringFilterInput
Example
{
"eq": "xyz789",
"ne": "abc123",
"contains": "xyz789",
"startsWith": "abc123",
"endsWith": "xyz789",
"in": ["abc123"],
"notIn": ["abc123"],
"exists": true
}
SubmissionSourceEnum
Description
Source channel through which the application was submitted
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"AGENT_DIRECT"
SubmitCategoryDocumentsInput
SubmitDeliveryInput
Example
{
"delivery_id": "4",
"otp": "abc123",
"tenant": "xyz789",
"delivery_status": "PENDING",
"delivery_notes": "abc123",
"destination_location": {},
"payment_reference": "xyz789",
"failed_delivery_reason": "abc123",
"front_id_image": Upload,
"back_id_image": Upload
}
SubmitIndividualKYCInput
Example
{
"id_front": Upload,
"id_back": Upload,
"id_number": "xyz789",
"id_type": "NATIONAL_ID",
"passport_photo": Upload,
"tax_certificate": Upload,
"tax_pin": "abc123"
}
SubmitOrganizationKYCInput
Fields
| Input Field | Description |
|---|---|
incorporation_certificate - Upload
|
|
incorporation_number - String
|
|
registration_number - String
|
|
tax_certificate - Upload
|
|
tax_pin - String
|
|
company_logo - Upload
|
|
organization_subtype - String
|
|
organization_name - String
|
|
certificate_of_registration - Upload
|
|
cr12_form - Upload
|
|
business_license - Upload
|
|
primary_contact_id_front - Upload
|
|
primary_contact_id_back - Upload
|
|
primary_contact_passport_photo - Upload
|
Example
{
"incorporation_certificate": Upload,
"incorporation_number": "abc123",
"registration_number": "xyz789",
"tax_certificate": Upload,
"tax_pin": "abc123",
"company_logo": Upload,
"organization_subtype": "xyz789",
"organization_name": "abc123",
"certificate_of_registration": Upload,
"cr12_form": Upload,
"business_license": Upload,
"primary_contact_id_front": Upload,
"primary_contact_id_back": Upload,
"primary_contact_passport_photo": Upload
}
SubmitProductImagesInput
Fields
| Input Field | Description |
|---|---|
product_id - String!
|
Product ID |
product_images - [Upload!]!
|
Product images |
primary_image_index - Int!
|
Index of primary image in the images array |
Example
{
"product_id": "xyz789",
"product_images": [Upload],
"primary_image_index": 123
}
SubmitStaffKYCInput
SubsequentLoanNamespace
Fields
| Field Name | Description |
|---|---|
createSubsequentLoanApplication - ApplicationEntityGraphQL!
|
Create a subsequent loan application for an existing customer. Accepts a customer UUID or official ID number. |
Arguments
|
|
verifySubsequentLoanOtp - ApplicationEntityGraphQL!
|
Verify the OTP sent to the customer after a subsequent loan application is created. |
checkSubsequentLoanEligibility - Boolean!
|
Check if a customer is eligible for a subsequent loan. Accepts a customer UUID or official ID number. |
Arguments
|
|
Example
{
"createSubsequentLoanApplication": ApplicationEntityGraphQL,
"verifySubsequentLoanOtp": ApplicationEntityGraphQL,
"checkSubsequentLoanEligibility": true
}
SuccessResponse
SwitchReturnsWorkflowInput
Description
Input for switching an active returns workflow to a different request type
Fields
| Input Field | Description |
|---|---|
target_request_type - ReturnsRequestType!
|
Target workflow request type |
reason - String!
|
Reason for switching the workflow |
force_switch - Boolean
|
Force switching from late stages (restricted to ops/cx-ops lanes) |
Example
{
"target_request_type": "SWAP",
"reason": "abc123",
"force_switch": true
}
SyncGroupInput
TaxPlatform
Description
Tax verification provider platforms
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"BOT"
TaxVerificationTransactionCursorPaginatedResponse
Description
Cursor paginated tax verification transactions response
Fields
| Field Name | Description |
|---|---|
data - [TaxVerificationTransactionDto!]!
|
Array of items |
pagination - CursorPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [TaxVerificationTransactionDto],
"pagination": CursorPaginationMetadata
}
TaxVerificationTransactionDto
Description
Tax verification transaction record (KRA)
Fields
| Field Name | Description |
|---|---|
id - ID
|
Unique identifier |
provider - TaxPlatform!
|
Tax verification provider |
full_name - String
|
Full name from KRA |
identification_type - String
|
Type of identification |
pin_number - String
|
PIN number |
expiration_date - String
|
PIN expiration date |
issuance_date - String
|
PIN issuance date |
phone - String
|
Phone number |
gender - String
|
Gender |
date_of_birth - String
|
Date of birth |
place_of_birth - String
|
Place of birth |
kra_pin - String
|
KRA PIN |
citizenship - String
|
Citizenship |
is_pin_active - Int
|
Is PIN active (1 = active) |
email - String
|
Email address |
country - String
|
Country |
record_status - VerificationRecordStatus
|
Cache freshness state of this record |
createdAt - DateTime
|
Record creation timestamp |
Example
{
"id": 4,
"provider": "BOT",
"full_name": "xyz789",
"identification_type": "abc123",
"pin_number": "xyz789",
"expiration_date": "abc123",
"issuance_date": "abc123",
"phone": "xyz789",
"gender": "xyz789",
"date_of_birth": "xyz789",
"place_of_birth": "xyz789",
"kra_pin": "xyz789",
"citizenship": "xyz789",
"is_pin_active": 987,
"email": "abc123",
"country": "xyz789",
"record_status": "ACTIVE",
"createdAt": "2007-12-03T10:15:30Z"
}
TaxVerificationTransactionFilterInput
Description
Filter input for querying tax verification transactions
Fields
| Input Field | Description |
|---|---|
kra_pin - String
|
Filter by KRA PIN |
provider - TaxPlatform
|
Filter by provider |
identification_type - String
|
Filter by identification type |
record_status - VerificationRecordStatus
|
Filter by cache freshness state |
Example
{
"kra_pin": "xyz789",
"provider": "BOT",
"identification_type": "abc123",
"record_status": "ACTIVE"
}
TaxVerificationTransactionOffsetPaginatedResponse
Description
Offset paginated tax verification transactions response
Fields
| Field Name | Description |
|---|---|
data - [TaxVerificationTransactionDto!]!
|
Array of items |
metadata - OffsetPaginationMetadata!
|
Pagination metadata |
Example
{
"data": [TaxVerificationTransactionDto],
"metadata": OffsetPaginationMetadata
}
TenantNameEnum
Description
Tenant name enumeration
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"RESUBMISSION"
TestResponse
TrainingStatusEnum
Description
Training progress status
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"NOT_REQUIRED"
TransactionStatusEnum
Description
Status of ledger transaction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"RECONCILED"
TransactionTypeEnum
Description
Type of ledger transaction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PAYMENT"
TransferStaffBetweenOutletsInput
Example
{
"staff_profile_id": "xyz789",
"retailer_organization_id": "xyz789",
"from_outlet_id": "xyz789",
"to_outlet_id": "abc123",
"transfer_reason": "xyz789"
}
TransferTerritoryInput
Example
{
"fromEntityId": "abc123",
"toEntityId": "abc123",
"entityType": "AGENT",
"territoryId": "4",
"effectiveDate": "xyz789",
"reason": "xyz789"
}
UnassignTerritoryInput
UndoPaymentRevocationInput
Fields
| Input Field | Description |
|---|---|
revocation_adjustment_id - ID!
|
|
reason_code - PaymentRevocationReasonCodeEnum!
|
|
reason_text - String!
|
|
idempotency_key - String!
|
Example
{
"revocation_adjustment_id": 4,
"reason_code": "OPERATOR_ERROR",
"reason_text": "abc123",
"idempotency_key": "abc123"
}
UpdateAgentProfileInput
Fields
| Input Field | Description |
|---|---|
agent_status - AgentStatusEnum
|
|
kyc_status - KYCStatusEnum
|
|
staff_document_ref - ID
|
|
partner_document_ref - ID
|
|
is_deleted - Boolean
|
Example
{
"agent_status": "ACTIVE",
"kyc_status": "NOT_SUBMITTED",
"staff_document_ref": 4,
"partner_document_ref": "4",
"is_deleted": true
}
UpdateApplicationCallDetailsInput
Fields
| Input Field | Description |
|---|---|
status - String
|
Call status |
notes - String
|
Notes or comments from the call |
agent_name - String
|
Agent name who made the call |
caller_id - String
|
Caller ID used during the call |
delivery_location_type - String
|
Type of delivery location (e.g., home, office) |
priority - String
|
Priority level of the call |
call_date - DateTime
|
Date when the call was made |
follow_up_required - Boolean
|
Whether a follow-up is required |
customer_location - String
|
Customer's physical location |
employer_info - String
|
Employer information provided during the call |
employment_details - String
|
Employment details shared by customer |
delivery_location - String
|
Delivery location provided during call |
product_choice - String
|
Product the customer chose |
confirmed_price_plan - String
|
Confirmed price plan chosen by the customer |
geo_address - String
|
Geographical address (geo-coded) |
delivery_or_collection_location - String
|
Delivery or collection location preference |
other_delivery_notes - String
|
Other notes about delivery instructions |
call_outcome - String
|
Outcome of the call |
call_notes - String
|
Notes from the call |
call_ended_at - DateTime
|
Timestamp when the call ended |
call_started_at - DateTime
|
Timestamp when the call started |
call_duration_seconds - Int
|
Duration of the call in seconds |
call_type - CreditCallTypeEnum
|
Type of credit call — NOK or NO_NOK |
nok - CallDetailsNokInput
|
Next of kin details |
customer_general_location - String
|
Customer general location |
preferred_delivery_day - DateTime
|
Preferred delivery day |
preferred_delivery_slot - String
|
Preferred delivery slot |
work_location - String
|
Work location of the customer |
work_location_link - String
|
Work location link for the customer |
screening_consent - String
|
Screening consent |
accept_loan_terms - String
|
Accept loan terms |
extras - JSON
|
Extra metadata for the call |
createdAt - DateTime
|
Creation timestamp |
updatedAt - DateTime
|
Last update timestamp |
Example
{
"status": "xyz789",
"notes": "xyz789",
"agent_name": "abc123",
"caller_id": "xyz789",
"delivery_location_type": "abc123",
"priority": "xyz789",
"call_date": "2007-12-03T10:15:30Z",
"follow_up_required": true,
"customer_location": "xyz789",
"employer_info": "xyz789",
"employment_details": "xyz789",
"delivery_location": "xyz789",
"product_choice": "abc123",
"confirmed_price_plan": "abc123",
"geo_address": "xyz789",
"delivery_or_collection_location": "abc123",
"other_delivery_notes": "xyz789",
"call_outcome": "abc123",
"call_notes": "abc123",
"call_ended_at": "2007-12-03T10:15:30Z",
"call_started_at": "2007-12-03T10:15:30Z",
"call_duration_seconds": 987,
"call_type": "NOK",
"nok": CallDetailsNokInput,
"customer_general_location": "abc123",
"preferred_delivery_day": "2007-12-03T10:15:30Z",
"preferred_delivery_slot": "xyz789",
"work_location": "abc123",
"work_location_link": "xyz789",
"screening_consent": "xyz789",
"accept_loan_terms": "abc123",
"extras": {},
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
UpdateApplicationEntityInput
Fields
| Input Field | Description |
|---|---|
application_id - String
|
Application ID |
customer_id - String
|
Customer ID associated with the application |
application_state - String
|
Current state of the application |
credit_state - String
|
Current credit state |
prospect_stage - ProspectStage
|
Current prospect stage |
application_channel - String
|
Channel through which application was submitted |
kyc_documents - [String!]
|
List of KYC documents |
active_kyc_documents - ApplicationActiveKycDocumentsInput
|
Active KYC documents |
customer - ApplicationCustomerInput
|
Customer information |
next_of_kin - ApplicationNextOfKinInput
|
Next of kin information |
previous_next_of_kin - ApplicationNextOfKinInput
|
Previous next of kin information |
credit - ApplicationCreditInput
|
Credit information |
risk - ApplicationRiskInput
|
Risk assessment |
delivery - ApplicationDeliveryInput
|
Delivery information |
liveness_check - ApplicationLivenessCheckInput
|
Liveness check information |
consent - ApplicationConsentInput
|
Consent information |
timeline - ApplicationTimelineInput
|
Application timeline |
staff - ApplicationStaffInput
|
Staff assignments |
references - ApplicationReferencesInput
|
Reference IDs |
legacy_references - ApplicationLegacyReferencesInput
|
Legacy reference IDs |
validation_references - ApplicationValidationReferencesInput
|
Validation reference IDs |
metadata - JSON
|
Additional metadata |
normal_high_deposit - NormalHighDepositEnum
|
Whether this application uses a normal or high deposit |
credit_call - ApplicationCreditCallInput
|
Credit call details |
Example
{
"application_id": "abc123",
"customer_id": "abc123",
"application_state": "abc123",
"credit_state": "xyz789",
"prospect_stage": "UNKNOWN",
"application_channel": "xyz789",
"kyc_documents": ["abc123"],
"active_kyc_documents": ApplicationActiveKycDocumentsInput,
"customer": ApplicationCustomerInput,
"next_of_kin": ApplicationNextOfKinInput,
"previous_next_of_kin": ApplicationNextOfKinInput,
"credit": ApplicationCreditInput,
"risk": ApplicationRiskInput,
"delivery": ApplicationDeliveryInput,
"liveness_check": ApplicationLivenessCheckInput,
"consent": ApplicationConsentInput,
"timeline": ApplicationTimelineInput,
"staff": ApplicationStaffInput,
"references": ApplicationReferencesInput,
"legacy_references": ApplicationLegacyReferencesInput,
"validation_references": ApplicationValidationReferencesInput,
"metadata": {},
"normal_high_deposit": "NORMAL",
"credit_call": ApplicationCreditCallInput
}
UpdateAuditLogInput
Fields
| Input Field | Description |
|---|---|
object_type - String
|
|
object_id - ID
|
|
action_type - ActionTypeEnum
|
|
action_description - String
|
|
action_status - ActionStatusEnum
|
|
auditor_id - ID
|
|
auditor_username - String
|
|
auditor_email - String
|
|
actor_metadata - JSON
|
|
object_old_value - JSON
|
|
object_new_value - JSON
|
|
field_changes - JSON
|
|
action_requires_approval - Boolean
|
|
action_approval_levels - [String!]
|
|
action_requested_by_id - ID
|
|
action_requested_by_username - String
|
|
action_approver_id - ID
|
|
action_approver_username - String
|
|
action_approved_at - DateTime
|
|
action_approval_status - ActionApprovalStatusEnum
|
|
action_approval_notes - String
|
|
ip_address - String
|
|
user_agent - String
|
|
device_info - JSON
|
|
session_id - String
|
|
audited_at - DateTime
|
|
visibility_level - VisibilityLevelEnum
|
Example
{
"object_type": "xyz789",
"object_id": "4",
"action_type": "NOTE",
"action_description": "xyz789",
"action_status": "DRAFT",
"auditor_id": "4",
"auditor_username": "xyz789",
"auditor_email": "xyz789",
"actor_metadata": {},
"object_old_value": {},
"object_new_value": {},
"field_changes": {},
"action_requires_approval": false,
"action_approval_levels": ["abc123"],
"action_requested_by_id": 4,
"action_requested_by_username": "abc123",
"action_approver_id": 4,
"action_approver_username": "abc123",
"action_approved_at": "2007-12-03T10:15:30Z",
"action_approval_status": "PENDING",
"action_approval_notes": "abc123",
"ip_address": "xyz789",
"user_agent": "abc123",
"device_info": {},
"session_id": "abc123",
"audited_at": "2007-12-03T10:15:30Z",
"visibility_level": "PUBLIC"
}
UpdateCallDispositionInput
Fields
| Input Field | Description |
|---|---|
disposition - String
|
Call disposition status |
notes - String
|
Notes or comments from the call |
priority - CallPriority
|
Priority level of the call |
next_call_date - DateTime
|
Next scheduled call date |
Example
{
"disposition": "abc123",
"notes": "xyz789",
"priority": "NONE",
"next_call_date": "2007-12-03T10:15:30Z"
}
UpdateCategoryInput
Fields
| Input Field | Description |
|---|---|
name - String
|
Category name |
slug - String
|
URL-friendly name |
description - String
|
Category description |
icon - String
|
Category icon name |
required_attributes - JSON
|
Required attributes for this category |
sku_attributes - JSON
|
SKU attributes for this category |
parent_category_id - String
|
Parent category ID |
level - Int
|
Hierarchy level (0, 1, or 2) |
path - String
|
Full path (materialized) |
sort_order - Int
|
Display order |
is_active - Boolean
|
Is category visible? |
meta_title - String
|
SEO title |
meta_description - String
|
SEO description |
Example
{
"name": "xyz789",
"slug": "xyz789",
"description": "xyz789",
"icon": "abc123",
"required_attributes": {},
"sku_attributes": {},
"parent_category_id": "abc123",
"level": 987,
"path": "abc123",
"sort_order": 987,
"is_active": true,
"meta_title": "xyz789",
"meta_description": "abc123"
}
UpdateCohortInput
Fields
| Input Field | Description |
|---|---|
cohort_name - String
|
|
cohort_type - CohortType
|
|
training_track - PartnerTrackEnum
|
|
cohort_status - CohortStatus
|
|
start_date - DateTime
|
|
end_date - DateTime
|
|
duration_weeks - Int
|
|
assigned_trainer_ids - [String!]
|
|
enrolled_agent_ids - [String!]
|
|
max_capacity - Int
|
|
training_location - String
|
|
region - String
|
|
curriculum_modules - [String!]
|
|
notes - String
|
|
created_by - String
|
Example
{
"cohort_name": "xyz789",
"cohort_type": "AGENT_ONBOARDING",
"training_track": "SALES",
"cohort_status": "PLANNED",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"duration_weeks": 123,
"assigned_trainer_ids": ["xyz789"],
"enrolled_agent_ids": ["xyz789"],
"max_capacity": 987,
"training_location": "abc123",
"region": "xyz789",
"curriculum_modules": ["xyz789"],
"notes": "abc123",
"created_by": "xyz789"
}
UpdateCohortStatusInput
Fields
| Input Field | Description |
|---|---|
cohort_id - String!
|
|
new_status - CohortStatus!
|
|
status_reason - String
|
|
status_notes - String
|
Example
{
"cohort_id": "xyz789",
"new_status": "PLANNED",
"status_reason": "abc123",
"status_notes": "xyz789"
}
UpdateCommissionInput
Fields
| Input Field | Description |
|---|---|
channel_type - ChannelTypeEnum
|
|
commission_type - CommissionDeterminationType
|
|
attribute_type - CommissionAttributeType
|
|
commission_value_type - CommissionValueType
|
|
sku_id - String
|
|
min_price - Float
|
|
max_price - Float
|
|
product_commission - Float
|
|
loan_commission - Float
|
|
cash_commission - Float
|
|
start_date - String
|
|
end_date - String
|
|
is_active - Boolean
|
Example
{
"channel_type": "ONLINE_AGENT",
"commission_type": "FLAT",
"attribute_type": "ALL",
"commission_value_type": "FLAT",
"sku_id": "xyz789",
"min_price": 987.65,
"max_price": 123.45,
"product_commission": 987.65,
"loan_commission": 123.45,
"cash_commission": 123.45,
"start_date": "xyz789",
"end_date": "xyz789",
"is_active": false
}
UpdateCommissionOverrideInput
Example
{
"agent_profile_id": "xyz789",
"commission_rule_id": "xyz789",
"product_commission": 987.65,
"loan_commission": 123.45,
"cash_commission": 123.45,
"commission_value_type": "FLAT",
"is_active": false
}
UpdateCommunicationInput
Fields
| Input Field | Description |
|---|---|
userId - String
|
|
channel - NotificationChannel
|
|
type - NotificationType
|
|
message - BaseMessageInput
|
|
emailData - EmailDataInput
|
|
smsData - SmsDataInput
|
|
pushData - PushDataInput
|
|
inAppData - InAppDataInput
|
|
scheduledFor - DateTime
|
|
metadata - JSON
|
|
tags - [String!]
|
|
status - NotificationStatus
|
|
retryCount - Int
|
Example
{
"userId": "xyz789",
"channel": "PUSH",
"type": "INFO",
"message": BaseMessageInput,
"emailData": EmailDataInput,
"smsData": SmsDataInput,
"pushData": PushDataInput,
"inAppData": InAppDataInput,
"scheduledFor": "2007-12-03T10:15:30Z",
"metadata": {},
"tags": ["abc123"],
"status": "PENDING",
"retryCount": 123
}
UpdateConditionInput
Fields
| Input Field | Description |
|---|---|
grade - String
|
Condition grade code |
name - String
|
Display name |
sort_order - Int
|
Display order |
color_hex - String
|
Badge color |
badge_icon - String
|
Icon identifier |
criteria - JSON
|
Condition criteria |
description - String
|
Customer-facing description |
internal_notes - String
|
Staff guidelines |
verification_requirements - JSON
|
Required tests/photos |
warranty_months - Int
|
Warranty period in months |
price_multiplier - Float
|
Price adjustment (1.00 = 100%) |
financing_impact - JSON
|
PAYGO loan term adjustments |
seller_requirements - JSON
|
Who can sell this grade |
is_active - Boolean
|
Is condition available? |
available_for_sellers - Boolean
|
Can sellers list this? |
Example
{
"grade": "abc123",
"name": "abc123",
"sort_order": 123,
"color_hex": "xyz789",
"badge_icon": "xyz789",
"criteria": {},
"description": "xyz789",
"internal_notes": "abc123",
"verification_requirements": {},
"warranty_months": 123,
"price_multiplier": 987.65,
"financing_impact": {},
"seller_requirements": {},
"is_active": false,
"available_for_sellers": true
}
UpdateConfigInput
Description
Update config input
Fields
| Input Field | Description |
|---|---|
value - JSON
|
|
value_schema - JSON
|
JSON Schema for validating the config value |
ui_hints - JSON
|
UI rendering hints for the config editor (e.g. component type) |
options - [String!]
|
|
value_type - ConfigSystemType
|
|
description - String
|
|
category - ConfigCategory
|
|
is_encrypted - Boolean
|
|
is_protected - Boolean
|
|
is_ui_hidden - Boolean
|
Hide this config from the config editor UI |
requires_validation - Boolean
|
Whether the config value should be validated against its JSON schema. Set to false to store arbitrary JSON without schema validation. |
platform - ConfigPlatformEnum
|
|
publish - Boolean
|
Publish immediately (for versioned configs) |
Example
{
"value": {},
"value_schema": {},
"ui_hints": {},
"options": ["xyz789"],
"value_type": "STRING",
"description": "abc123",
"category": "GENERAL",
"is_encrypted": true,
"is_protected": true,
"is_ui_hidden": true,
"requires_validation": false,
"platform": "ALL",
"publish": true
}
UpdateCreditApplicationInput
Fields
| Input Field | Description |
|---|---|
applicationId - String!
|
|
changes - UpdateApplicationEntityInput!
|
Partial credit application changes to apply |
type - CreditUpdateType
|
Type of update (validation, nok, credit_call, crb_info, resubmission, credit_status). Omit for general credit update. |
justification - String
|
Justification for the update |
assignAgent - AssignAgentPayload
|
Optionally assign an agent as part of this update |
Example
{
"applicationId": "xyz789",
"changes": UpdateApplicationEntityInput,
"type": "VALIDATION",
"justification": "abc123",
"assignAgent": AssignAgentPayload
}
UpdateDealerAgentInput
UpdateDealerOwnerInput
Example
{
"organization_name": "abc123",
"assigned_sfm_id": "xyz789",
"location_details": LocationDetailsInput,
"whatsapp_number": "xyz789",
"county": "xyz789",
"sub_county": "xyz789"
}
UpdateDeliveryCallInput
Fields
| Input Field | Description |
|---|---|
order_id - ID
|
|
called_by - ID
|
|
confirmed_delivery_location - ConfirmedDeliveryLocationInput
|
|
spec_preference - SpecPreferenceInput
|
|
confirmed_delivery_date - String
|
|
confirmed_delivery_slot - DeliverySlotEnum
|
|
outcome - DeliveryCallOutcomeEnum
|
|
confirmed_delivery_type - ConfirmedDeliveryTypeEnum
|
|
confirmed_delivery_type_name - ConfirmedDeliveryTypeNameEnum
|
|
notes - String
|
|
metadata - JSON
|
Example
{
"order_id": 4,
"called_by": 4,
"confirmed_delivery_location": ConfirmedDeliveryLocationInput,
"spec_preference": SpecPreferenceInput,
"confirmed_delivery_date": "xyz789",
"confirmed_delivery_slot": "MORNING",
"outcome": "CALL_BACK",
"confirmed_delivery_type": "DELIVERY",
"confirmed_delivery_type_name": "MO",
"notes": "abc123",
"metadata": {}
}
UpdateDeliveryInput
Fields
| Input Field | Description |
|---|---|
order_id - ID
|
|
seller_id - ID
|
|
assigned_rider_id - ID
|
|
delivery_status - DeliveryStatusEnum
|
|
delivery_address - JSON
|
|
tracking_number - String
|
|
estimated_arrival - DateTime
|
|
actual_arrival - DateTime
|
|
delivery_notes - String
|
|
destination_location - JSON
|
|
proof_of_delivery - JSON
|
Example
{
"order_id": "4",
"seller_id": 4,
"assigned_rider_id": "4",
"delivery_status": "PENDING",
"delivery_address": {},
"tracking_number": "abc123",
"estimated_arrival": "2007-12-03T10:15:30Z",
"actual_arrival": "2007-12-03T10:15:30Z",
"delivery_notes": "xyz789",
"destination_location": {},
"proof_of_delivery": {}
}
UpdateDeliveryItemInput
UpdateFlashSaleInput
Fields
| Input Field | Description |
|---|---|
title - String
|
Flash sale title |
slug - String
|
|
description - String
|
|
start_date - DateTime
|
Sale start date |
end_date - DateTime
|
Sale end date |
status - FlashSaleStatusEnum
|
|
max_quantity - Int
|
|
sold_quantity - Int
|
|
min_discount_percentage - Float
|
|
is_featured - Boolean
|
|
banner_image - String
|
|
icon_url - String
|
|
countdown_display - Boolean
|
|
priority - Int
|
|
participating_sellers - [String!]
|
|
performance_metrics - JSON
|
|
meta_title - String
|
|
meta_description - String
|
Example
{
"title": "abc123",
"slug": "xyz789",
"description": "xyz789",
"start_date": "2007-12-03T10:15:30Z",
"end_date": "2007-12-03T10:15:30Z",
"status": "SCHEDULED",
"max_quantity": 987,
"sold_quantity": 123,
"min_discount_percentage": 987.65,
"is_featured": false,
"banner_image": "xyz789",
"icon_url": "abc123",
"countdown_display": false,
"priority": 987,
"participating_sellers": ["abc123"],
"performance_metrics": {},
"meta_title": "abc123",
"meta_description": "xyz789"
}
UpdateFlashSaleItemInput
Fields
| Input Field | Description |
|---|---|
flash_sale_id - String
|
Flash sale ID |
seller_catalog_id - String
|
Seller catalog ID |
product_id - String
|
Product ID |
sku_id - String
|
SKU ID |
original_price - Float
|
Original price |
flash_sale_price - Float
|
Flash sale price |
discount_percentage - Float
|
Discount percentage |
stock_allocated - Int
|
Stock allocated for sale |
stock_sold - Int
|
Stock sold |
stock_remaining - Int
|
Stock remaining |
max_per_customer - Int
|
Maximum per customer |
display_priority - Int
|
Display priority |
is_featured - Boolean
|
Is item featured? |
badge_text - String
|
Badge text |
Example
{
"flash_sale_id": "abc123",
"seller_catalog_id": "xyz789",
"product_id": "abc123",
"sku_id": "abc123",
"original_price": 123.45,
"flash_sale_price": 987.65,
"discount_percentage": 123.45,
"stock_allocated": 987,
"stock_sold": 987,
"stock_remaining": 987,
"max_per_customer": 123,
"display_priority": 123,
"is_featured": true,
"badge_text": "xyz789"
}
UpdateGroupInput
Fields
| Input Field | Description |
|---|---|
name - String
|
|
description - String
|
|
parent_id - String
|
|
attributes - JSONObject
|
|
is_active - Boolean
|
Example
{
"name": "abc123",
"description": "abc123",
"parent_id": "xyz789",
"attributes": {},
"is_active": true
}
UpdateIdentityVerificationTransactionInput
Description
Input for updating an identity verification transaction
Fields
| Input Field | Description |
|---|---|
provider - IprsPlatform
|
IPRS verification provider |
full_name - String
|
Full name from verification |
gender - String
|
Gender |
date_of_birth - String
|
Date of birth |
place_of_birth - String
|
Place of birth |
kra_pin - String
|
KRA PIN |
citizenship - String
|
Citizenship |
is_alive - Int
|
Is alive status (1 = alive) |
identification_type - String
|
Type of identification document |
identification_number - String
|
Identification number |
id_serial - String
|
ID serial number |
uploaded_photo - String
|
Uploaded photo URL |
phone - String
|
Phone number |
email - String
|
Email address |
country - String
|
Country |
record_status - VerificationRecordStatus
|
Cache freshness state of this record |
Example
{
"provider": "TRANSUNION",
"full_name": "abc123",
"gender": "abc123",
"date_of_birth": "xyz789",
"place_of_birth": "xyz789",
"kra_pin": "abc123",
"citizenship": "xyz789",
"is_alive": 987,
"identification_type": "xyz789",
"identification_number": "xyz789",
"id_serial": "abc123",
"uploaded_photo": "xyz789",
"phone": "xyz789",
"email": "abc123",
"country": "xyz789",
"record_status": "ACTIVE"
}
UpdateInventoryAllocationInput
Example
{
"order_item_id": 4,
"inventory_id": 4,
"quantity_allocated": 123.45,
"allocation_status": "RESERVED",
"expiry_date": "2007-12-03T10:15:30Z",
"metadata": {},
"release_inventory_location_id": 4
}
UpdateInventoryInput
Fields
| Input Field | Description |
|---|---|
product_id - String
|
Product ID |
sku_id - String
|
SKU ID |
condition_id - String
|
Condition ID |
seller_catalog_id - String
|
Seller catalog ID |
seller_id - String
|
Seller ID |
identifiers - JSON
|
Additional identifiers |
physical_state - PhysicalState
|
Physical state of device |
mdm_enrollment - MdmEnrollmentStatusEnum
|
Canonical MDM enrollment status |
enrollment_status - MdmEnrollmentStatusEnum
|
Deprecated alias for mdm_enrollment |
stock_status_type - StockStatusTypeEnum
|
High-level stock status type |
stock_status_name - StockStatusNameEnum
|
Detailed stock status name |
stock_origin - StockOriginEnum
|
Origin of stock |
stock_type - StockTypeEnum
|
Ownership stock type |
b2b - Boolean
|
Whether the stock item is B2B inventory. Default = false |
qc_report - QCReportInput
|
Quality control report |
qc_report_link - String
|
QC report file URL |
qc_status - QCStatus
|
Quality control status. Default = PENDING |
qc_status_type - QCStatusTypeEnum
|
QC status type classification (Inbound, Repair, Reverse) |
unit_cost - Float
|
Unit cost paid by seller. Default = 0 |
contract_id - String
|
Active contract ID |
mdm_status - JSON
|
MDM status information |
batch_number - String
|
Batch number |
location_id - String
|
Current location ID |
inspection_report - String
|
Inspection report |
warranty - JSON
|
Warranty information |
supplier_name - String
|
Supplier name |
supplier_order_reference - String
|
Supplier order reference |
customer_id - String
|
Customer ID |
sale_id - String
|
Sale ID |
serial_number - String
|
Serial number (IMEI/SN) - single value for updates |
Example
{
"product_id": "xyz789",
"sku_id": "abc123",
"condition_id": "abc123",
"seller_catalog_id": "xyz789",
"seller_id": "abc123",
"identifiers": {},
"physical_state": "IN_STOCK",
"mdm_enrollment": "PENDING",
"enrollment_status": "PENDING",
"stock_status_type": "INBOUND",
"stock_status_name": "ORDERED",
"stock_origin": "INTERNATIONAL",
"stock_type": "ONE_P",
"b2b": true,
"qc_report": QCReportInput,
"qc_report_link": "abc123",
"qc_status": "PENDING",
"qc_status_type": "INBOUND",
"unit_cost": 123.45,
"contract_id": "abc123",
"mdm_status": {},
"batch_number": "abc123",
"location_id": "xyz789",
"inspection_report": "abc123",
"warranty": {},
"supplier_name": "abc123",
"supplier_order_reference": "xyz789",
"customer_id": "abc123",
"sale_id": "abc123",
"serial_number": "abc123"
}
UpdateInventoryLocationInput
Fields
| Input Field | Description |
|---|---|
location_name - String
|
Location name |
location_type - LocationTypeEnum
|
Type of location |
location_code - String
|
Location code |
address - String
|
Physical address |
city - String
|
City |
region - String
|
Region or state |
coordinates - InventoryCoordinatesInput
|
GPS coordinates |
location_details - InventoryLocationDetailsInput
|
Structured location details |
user_id - String
|
Associated agent profile ID |
manager_id - String
|
Deprecated alias for user_id |
capacity - Int
|
Maximum capacity |
current_stock - Int
|
Current stock count |
is_active - Boolean
|
Is location active? |
operating_hours - JSON
|
Operating hours |
seller_id - String
|
Associated seller ID |
Example
{
"location_name": "xyz789",
"location_type": "TRANSIT_INBOUND",
"location_code": "xyz789",
"address": "abc123",
"city": "abc123",
"region": "xyz789",
"coordinates": InventoryCoordinatesInput,
"location_details": InventoryLocationDetailsInput,
"user_id": "abc123",
"manager_id": "xyz789",
"capacity": 123,
"current_stock": 123,
"is_active": true,
"operating_hours": {},
"seller_id": "xyz789"
}
UpdateInventoryWithQCReportInput
Fields
| Input Field | Description |
|---|---|
inventory_id - ID!
|
Inventory ID to update |
qc_report - QCReportInput!
|
PhoneCheck QC report data |
condition_id - ID
|
Condition ID to assign |
inspection_report - String
|
Inspection report notes |
qc_status - QCStatus
|
QC status override (auto-determined if not provided) |
qc_status_type - QCStatusTypeEnum!
|
QC status type classification (Inbound, Repair, Reverse) — required when saving a QC report |
Example
{
"inventory_id": "4",
"qc_report": QCReportInput,
"condition_id": 4,
"inspection_report": "abc123",
"qc_status": "PENDING",
"qc_status_type": "INBOUND"
}
UpdateLeadGenerationInput
UpdateLoanContractInput
Fields
| Input Field | Description |
|---|---|
sale_id - String
|
Sale ID associated with this loan contract |
customer_id - String
|
Customer ID associated with this loan contract |
opening_date - DateTime
|
Loan contract opening date |
duration - Float
|
Loan duration in days. Default = 364 |
upfront_payment - Float
|
Upfront payment amount. Default = 0 |
deposit - Float
|
Deposit amount. Default = 0 |
repayment_type - RepaymentTypeEnum
|
Repayment frequency. Default = WEEKLY |
gross_loan_amount - Float
|
Gross loan amount |
interest_rate - Float
|
Daily interest rate |
is_restructured - Boolean
|
Whether this is a restructured loan. Default = false |
original_contract_id - String
|
Original contract ID if restructured |
metadata - JSON
|
Additional metadata |
loan_status_override - LoanAccountStatusEnum
|
Manual override for calculated loan account status |
loan_product_code - String
|
Loan product code |
grace_period_status - String
|
|
grace_period_category - String
|
|
grace_period_credit_expiry - DateTime
|
|
returned_date - DateTime
|
|
grace_period_last_trigger_source - String
|
Example
{
"sale_id": "abc123",
"customer_id": "xyz789",
"opening_date": "2007-12-03T10:15:30Z",
"duration": 123.45,
"upfront_payment": 123.45,
"deposit": 987.65,
"repayment_type": "DAILY",
"gross_loan_amount": 123.45,
"interest_rate": 987.65,
"is_restructured": false,
"original_contract_id": "abc123",
"metadata": {},
"loan_status_override": "NEW_ACTIVE",
"loan_product_code": "abc123",
"grace_period_status": "xyz789",
"grace_period_category": "abc123",
"grace_period_credit_expiry": "2007-12-03T10:15:30Z",
"returned_date": "2007-12-03T10:15:30Z",
"grace_period_last_trigger_source": "xyz789"
}
UpdateLoanDelinquencyTrackingInput
Fields
| Input Field | Description |
|---|---|
contract_id - String
|
Contract ID associated with this tracking record |
status - DelinquencyStatusEnum
|
Delinquency status. Default = CURRENT |
delinquency_start_date - DateTime
|
Date when delinquency started |
default_date - DateTime
|
Date when account defaulted |
days_past_due - Float
|
Number of days past due. Default = 0 |
amount_overdue - Float
|
Amount currently overdue. Default = 0 |
escalation_level - EscalationLevelEnum
|
Collection escalation level. Default = REMINDER |
collection_actions - JSON
|
Collection actions history |
write_off_date - DateTime
|
Date when account was written off |
recovery_amount - Float
|
Amount recovered |
recovery_probability - Float
|
Recovery probability (0-1) |
last_contact_date - DateTime
|
Last contact date with customer |
next_action_date - DateTime
|
Next planned action date |
assigned_collector - String
|
Assigned collector name |
notes - String
|
Collection notes |
metadata - JSON
|
Additional metadata |
Example
{
"contract_id": "abc123",
"status": "CURRENT",
"delinquency_start_date": "2007-12-03T10:15:30Z",
"default_date": "2007-12-03T10:15:30Z",
"days_past_due": 123.45,
"amount_overdue": 987.65,
"escalation_level": "REMINDER",
"collection_actions": {},
"write_off_date": "2007-12-03T10:15:30Z",
"recovery_amount": 123.45,
"recovery_probability": 987.65,
"last_contact_date": "2007-12-03T10:15:30Z",
"next_action_date": "2007-12-03T10:15:30Z",
"assigned_collector": "xyz789",
"notes": "xyz789",
"metadata": {}
}
UpdateLoanInstallmentInput
Fields
| Input Field | Description |
|---|---|
contract_id - String
|
Contract ID associated with this installment |
installment_number - Float
|
Installment number in sequence |
installment_type - InstallmentTypeEnum
|
Type of installment. Default = REGULAR |
due_date - DateTime
|
Installment due date |
due_repayment_amount - Float
|
Total amount due for this installment |
due_repayment_principal - Float
|
Principal amount portion |
due_repayment_interest - Float
|
Interest amount portion |
penalty_amount - Float
|
Penalty amount portion. Default = 0 |
due_cumulative_principal - Float
|
Cumulative principal to date |
due_cumulative_interest - Float
|
Cumulative interest to date |
cumulative_expected_repay - Float
|
Cumulative expected repayment (due_cumulative_principal + due_cumulative_interest) |
paid_principal - Float
|
Principal amount paid. Default = 0 |
paid_interest - Float
|
Interest amount paid. Default = 0 |
paid_penalty - Float
|
Penalty amount paid. Default = 0 |
outstanding_amount - Float
|
Outstanding amount remaining. Default = 0 |
amount_paid - Float
|
Total amount paid for this installment. Default = 0 |
status - InstallmentStatusEnum
|
Installment status. Default = PENDING |
paid_date - DateTime
|
Date when installment was paid |
days_overdue - Float
|
Days overdue. Default = 0 |
installment_year_month - String
|
Installment year-month (YYYY-MM) |
metadata - JSON
|
Additional metadata |
Example
{
"contract_id": "abc123",
"installment_number": 123.45,
"installment_type": "REGULAR",
"due_date": "2007-12-03T10:15:30Z",
"due_repayment_amount": 123.45,
"due_repayment_principal": 123.45,
"due_repayment_interest": 123.45,
"penalty_amount": 123.45,
"due_cumulative_principal": 123.45,
"due_cumulative_interest": 987.65,
"cumulative_expected_repay": 123.45,
"paid_principal": 123.45,
"paid_interest": 123.45,
"paid_penalty": 123.45,
"outstanding_amount": 123.45,
"amount_paid": 123.45,
"status": "PENDING",
"paid_date": "2007-12-03T10:15:30Z",
"days_overdue": 987.65,
"installment_year_month": "xyz789",
"metadata": {}
}
UpdateLoanLedgerInput
Fields
| Input Field | Description |
|---|---|
contract_id - String
|
Contract ID associated with this ledger entry |
transaction_date - DateTime
|
Transaction date |
transaction_type - TransactionTypeEnum
|
Type of transaction |
transaction_status - TransactionStatusEnum
|
Transaction status. Default = PENDING |
debit_credit - DebitCreditEnum
|
Debit or credit transaction |
balance_due - Float
|
Amount due on the loan |
amount_paid - Float
|
Amount paid in this transaction |
arrears_amount - Float
|
Arrears amount. Default = 0 |
advance_amount - Float
|
Advance payment amount. Default = 0 |
next_due_amount - Float
|
Next due amount |
past_due - Float
|
Past due amount as percentage. Default = 0 |
days_past_due - Float
|
Days past due. Default = 0 |
loan_age_days - Float
|
Loan age in days. Default = 0 |
repayment_due - Float
|
Total repayment due. Default = 0 |
days_since_last_payment - Float
|
Days since last payment. Default = 0 |
next_invoice_date - DateTime
|
Next invoice date |
last_payment_date - DateTime
|
Last payment date |
credit_expiry_date - DateTime
|
Credit expiry date for device locking |
loan_status - LoanAccountStatusEnum
|
Loan account status. Default = NEW_ACTIVE |
payment_type - LoanPaymentTypeEnum
|
Payment type |
payment_id - String
|
Payment ID reference |
description - String
|
Transaction description |
metadata - JSON
|
Additional metadata |
Example
{
"contract_id": "abc123",
"transaction_date": "2007-12-03T10:15:30Z",
"transaction_type": "PAYMENT",
"transaction_status": "RECONCILED",
"debit_credit": "DEBIT",
"balance_due": 987.65,
"amount_paid": 987.65,
"arrears_amount": 987.65,
"advance_amount": 987.65,
"next_due_amount": 987.65,
"past_due": 123.45,
"days_past_due": 123.45,
"loan_age_days": 123.45,
"repayment_due": 123.45,
"days_since_last_payment": 987.65,
"next_invoice_date": "2007-12-03T10:15:30Z",
"last_payment_date": "2007-12-03T10:15:30Z",
"credit_expiry_date": "2007-12-03T10:15:30Z",
"loan_status": "NEW_ACTIVE",
"payment_type": "ADJUSTMENT",
"payment_id": "abc123",
"description": "xyz789",
"metadata": {}
}
UpdateLoanOverrideInput
Fields
| Input Field | Description |
|---|---|
loan_id - String
|
Loan ID associated with this override |
field_name - String
|
Name of the field being overridden |
old_value - String
|
Previous value of the field |
new_value - String
|
New value for the field |
reason - String
|
Reason for the override |
approved_by - String
|
User who approved the override |
Example
{
"loan_id": "xyz789",
"field_name": "abc123",
"old_value": "abc123",
"new_value": "xyz789",
"reason": "xyz789",
"approved_by": "abc123"
}
UpdateOfflineAgentInput
Example
{
"whatsapp_number": "xyz789",
"secondary_number": "abc123",
"assigned_sfm_id": "xyz789",
"assigned_shop_id": "abc123",
"assigned_trainer_id": "xyz789",
"current_cohort_id": "xyz789"
}
UpdateOnlineAgentInput
Example
{
"whatsapp_number": "xyz789",
"secondary_number": "xyz789",
"assigned_sfm_id": "xyz789",
"referral_source": "xyz789",
"super_agent_id": "xyz789"
}
UpdateOrderInput
Fields
| Input Field | Description |
|---|---|
customer_id - ID
|
|
order_status - OrderStatusEnum
|
|
payment_status - SalePaymentStatusEnum
|
|
shipping_address - ShippingAddressInput
|
|
currency - CurrencyEnum
|
|
sub_total - Float
|
|
total_discount - Float
|
|
delivery_fee - Float
|
|
service_fee - Float
|
|
tax_amount - Float
|
|
total_amount - Float
|
|
application_id - String
|
|
sale_agent_id - String
|
|
submitting_agent_id - String
|
|
manual_override - Boolean
|
|
order_date - DateTime
|
|
metadata - JSON
|
Example
{
"customer_id": "4",
"order_status": "PENDING",
"payment_status": "UNPAID",
"shipping_address": ShippingAddressInput,
"currency": "KES",
"sub_total": 123.45,
"total_discount": 987.65,
"delivery_fee": 123.45,
"service_fee": 123.45,
"tax_amount": 123.45,
"total_amount": 987.65,
"application_id": "abc123",
"sale_agent_id": "xyz789",
"submitting_agent_id": "abc123",
"manual_override": false,
"order_date": "2007-12-03T10:15:30Z",
"metadata": {}
}
UpdateOrderItemInput
Example
{
"order_id": 4,
"seller_id": 4,
"item_type": "PRODUCT",
"catalog_id": "4",
"quantity": 987.65,
"unit_price": 123.45,
"discount_amount": 123.45,
"adjustments": {},
"subtotal": 987.65,
"purchase_type": "CASH",
"status": "xyz789",
"metadata": {}
}
UpdatePartnerOwnerInput
Fields
| Input Field | Description |
|---|---|
organization_name - String
|
|
assigned_sfm_id - String
|
|
location_details - LocationDetailsInput
|
|
partner_track - PartnerTrackEnum
|
|
whatsapp_number - String
|
|
county - String
|
|
sub_county - String
|
|
town - String
|
|
landmark - String
|
Example
{
"organization_name": "abc123",
"assigned_sfm_id": "abc123",
"location_details": LocationDetailsInput,
"partner_track": "SALES",
"whatsapp_number": "xyz789",
"county": "abc123",
"sub_county": "xyz789",
"town": "xyz789",
"landmark": "abc123"
}
UpdatePartnerProfileInput
Fields
| Input Field | Description |
|---|---|
channel_type - ChannelTypeEnum
|
|
channel_category - ChannelCategoryEnum
|
|
partner_track - PartnerTrackEnum
|
|
entity_type - EntityTypeEnum
|
|
is_owner - Boolean
|
|
shop_manager_id - String
|
|
platform_owner - Boolean
|
|
is_deleted - Boolean
|
|
staff_user_ids - [String!]
|
|
reports_to_id - String
|
|
hierarchy_depth - Int
|
|
hierarchy_path - [String!]
|
|
downline_partner_ids - [String!]
|
|
whatsapp_number - String
|
|
secondary_number - String
|
|
location_details - LocationDetailsInput
|
|
partner_status - PartnerStatusEnum
|
|
assignment_status - AssignmentStatusEnum
|
|
kyc_status - KYCStatusEnum
|
|
training_status - TrainingStatusEnum
|
|
current_cohort_id - String
|
|
assigned_trainer_id - String
|
|
assigned_sfm_id - String
|
|
assigned_promoter_id - String
|
|
graduation_date - DateTime
|
|
cohort_history - [CohortEnrollmentInput!]
|
|
assigned_shop_id - String
|
|
shop_based - Boolean
|
|
outlets - [RetailerOutletInput!]
|
|
shop_metadata - StaticShopMetadataInput
|
|
kyc_metadata - KYCMetadataInput
|
|
activation_date - DateTime
|
|
reactivation_date - DateTime
|
|
deactivation_date - DateTime
|
|
created_by - String
|
|
agent_profile_id - String
|
|
seller_id - String
|
Example
{
"channel_type": "ONLINE_AGENT",
"channel_category": "IN_HOUSE",
"partner_track": "SALES",
"entity_type": "INDIVIDUAL",
"is_owner": false,
"shop_manager_id": "xyz789",
"platform_owner": true,
"is_deleted": false,
"staff_user_ids": ["abc123"],
"reports_to_id": "abc123",
"hierarchy_depth": 987,
"hierarchy_path": ["xyz789"],
"downline_partner_ids": ["abc123"],
"whatsapp_number": "xyz789",
"secondary_number": "abc123",
"location_details": LocationDetailsInput,
"partner_status": "PROSPECT",
"assignment_status": "UNASSIGNED",
"kyc_status": "NOT_SUBMITTED",
"training_status": "NOT_REQUIRED",
"current_cohort_id": "abc123",
"assigned_trainer_id": "xyz789",
"assigned_sfm_id": "abc123",
"assigned_promoter_id": "xyz789",
"graduation_date": "2007-12-03T10:15:30Z",
"cohort_history": [CohortEnrollmentInput],
"assigned_shop_id": "abc123",
"shop_based": true,
"outlets": [RetailerOutletInput],
"shop_metadata": StaticShopMetadataInput,
"kyc_metadata": KYCMetadataInput,
"activation_date": "2007-12-03T10:15:30Z",
"reactivation_date": "2007-12-03T10:15:30Z",
"deactivation_date": "2007-12-03T10:15:30Z",
"created_by": "abc123",
"agent_profile_id": "abc123",
"seller_id": "abc123"
}
UpdatePartnerPromoterInput
Fields
| Input Field | Description |
|---|---|
user - CreateSimpleUserInput
|
|
agent - UpdateAgentProfileInput
|
|
employee_id - String
|
|
reports_to_id - String
|
|
passport_photo - Upload
|
|
assigned_territories - [String!]
|
|
assigned_promoter_partners - [String!]
|
Example
{
"user": CreateSimpleUserInput,
"agent": UpdateAgentProfileInput,
"employee_id": "abc123",
"reports_to_id": "abc123",
"passport_photo": Upload,
"assigned_territories": ["abc123"],
"assigned_promoter_partners": ["xyz789"]
}
UpdatePartnerShopAttendantInput
UpdatePartnerStatusInput
Fields
| Input Field | Description |
|---|---|
partner_id - String!
|
|
action - PartnerStatusAction!
|
|
reason - String
|
|
updated_by - String!
|
Example
{
"partner_id": "abc123",
"action": "ACTIVATE",
"reason": "abc123",
"updated_by": "xyz789"
}
UpdatePaymentAdjustmentInput
Fields
| Input Field | Description |
|---|---|
adjustment_amount - Float
|
Adjustment amount (decimal precision 2) |
adjustment_currency - CurrencyEnum
|
|
customer_id - ID
|
Target Customer ID |
payment_id - ID
|
Reference to the original payment transaction |
related_adjustment_id - ID
|
ID of related adjustment for splits |
adjustment_reason - AdjustmentReasonEnum
|
|
adjustment_type - AdjustmentTypeEnum
|
|
adjustment_status - AdjustmentStatusEnum
|
|
posting_type - PostingTypeEnum
|
|
posting_tag - PostingTagEnum
|
|
dr_cr - DrCrEnum
|
|
original_contract_number - String
|
|
new_contract_number - String
|
|
adjustment_note - String
|
|
loan_id - String
|
Business loan id (raw_loan_contract.loan_id) for audit/display. Reconciliation prioritization is driven by adjustment_metadata.contract_id, which the bulk importer resolves and sets from this value. |
adjustment_metadata - JSON
|
Example
{
"adjustment_amount": 123.45,
"adjustment_currency": "KES",
"customer_id": "4",
"payment_id": "4",
"related_adjustment_id": 4,
"adjustment_reason": "DEPOSIT",
"adjustment_type": "REFUND",
"adjustment_status": "EFFECTED",
"posting_type": "ADJUSTMENT_POST",
"posting_tag": "STAFF_SALE_DISCOUNT",
"dr_cr": "DR",
"original_contract_number": "xyz789",
"new_contract_number": "xyz789",
"adjustment_note": "abc123",
"loan_id": "abc123",
"adjustment_metadata": {}
}
UpdatePaymentAllocationInput
Fields
| Input Field | Description |
|---|---|
payment_id - String
|
Payment ID that is being allocated |
sale_id - String
|
Sale ID for primary anchor linking |
installment_id - String
|
Installment ID receiving the allocation |
contract_id - String
|
Contract ID for reference |
allocated_amount - Float
|
Total amount allocated from payment |
principal_allocated - Float
|
Amount allocated to principal |
interest_allocated - Float
|
Amount allocated to interest |
penalty_allocated - Float
|
Amount allocated to penalty. Default = 0 |
allocation_order - Float
|
Order of allocation for this payment |
metadata - JSON
|
Additional metadata |
Example
{
"payment_id": "xyz789",
"sale_id": "abc123",
"installment_id": "abc123",
"contract_id": "xyz789",
"allocated_amount": 123.45,
"principal_allocated": 123.45,
"interest_allocated": 987.65,
"penalty_allocated": 123.45,
"allocation_order": 987.65,
"metadata": {}
}
UpdatePhoneVerificationTransactionInput
Description
Input for updating a phone verification transaction
Fields
| Input Field | Description |
|---|---|
status - Boolean
|
Verification status. Default = false |
country_iso - String
|
Country ISO code. Default = "KE" |
provider - PhoneLookupPlatform
|
Phone lookup provider |
phone_number - String
|
Phone number being verified |
target_id - String
|
Target ID (customer/prospect) |
customer_name - String
|
Customer name from verification |
transaction_id - String
|
Transaction ID from provider |
failure_reason - String
|
Reason for failure |
registered - Boolean
|
Whether phone is registered. Default = false |
failed_at - DateTime
|
Timestamp when verification failed |
completed_at - DateTime
|
Timestamp when verification completed |
manual - Boolean
|
Whether this was a manual verification. Default = false |
check - PhoneCheckType
|
Type of verification check |
record_status - VerificationRecordStatus
|
Cache freshness state of this record |
Example
{
"status": true,
"country_iso": "abc123",
"provider": "MPESA",
"phone_number": "abc123",
"target_id": "xyz789",
"customer_name": "xyz789",
"transaction_id": "xyz789",
"failure_reason": "abc123",
"registered": false,
"failed_at": "2007-12-03T10:15:30Z",
"completed_at": "2007-12-03T10:15:30Z",
"manual": false,
"check": "UNKNOWN",
"record_status": "ACTIVE"
}
UpdatePricePlanInput
Fields
| Input Field | Description |
|---|---|
tier_id - String
|
|
code - String
|
|
name - String
|
|
min_device_value - Float
|
|
max_device_value - Float
|
|
deposit_percent - Float
|
|
subsequent_loan_discount_percent - Float
|
|
deposit_percent_high - Float
|
|
loan_multiplier - Float
|
|
loan_multiplier_high - Float
|
|
mocare_percent - Float
|
|
duration_months - Int
|
|
duration_months_high - Int
|
|
payment_frequency - PaymentFrequencyEnum
|
|
effective_from - String
|
|
effective_to - String
|
|
early_payoff_discounts - [EarlyPayoffDiscountInput!]
|
|
status - PricePlanStatusEnum
|
|
is_private - Boolean
|
|
metadata - JSON
|
|
changeReason - String
|
Example
{
"tier_id": "abc123",
"code": "abc123",
"name": "abc123",
"min_device_value": 123.45,
"max_device_value": 987.65,
"deposit_percent": 987.65,
"subsequent_loan_discount_percent": 123.45,
"deposit_percent_high": 123.45,
"loan_multiplier": 987.65,
"loan_multiplier_high": 123.45,
"mocare_percent": 123.45,
"duration_months": 123,
"duration_months_high": 987,
"payment_frequency": "DAILY",
"effective_from": "xyz789",
"effective_to": "xyz789",
"early_payoff_discounts": [EarlyPayoffDiscountInput],
"status": "ACTIVE",
"is_private": false,
"metadata": {},
"changeReason": "xyz789"
}
UpdateProductInput
Fields
| Input Field | Description |
|---|---|
name - String
|
Product name |
slug - String
|
URL-friendly name |
brand - String
|
Product brand |
model - String
|
Product model |
category_id - String
|
Category ID |
description - String
|
Short description |
long_description - String
|
Detailed description |
base_specifications - JSON
|
Product specifications |
primary_image_url - String
|
Primary product image URL |
images - [String!]
|
Additional product images |
video_url - String
|
Product video URL |
meta_title - String
|
SEO title |
meta_description - String
|
SEO description |
keywords - [String!]
|
SEO keywords |
is_active - Boolean
|
Is product active? |
approval_status - ProductApprovalStatusEnum
|
Approval status |
submitted_by_seller_id - String
|
Seller who submitted it |
approved_by - String
|
Who approved it |
rejection_reason - String
|
Rejection reason |
Example
{
"name": "xyz789",
"slug": "xyz789",
"brand": "xyz789",
"model": "xyz789",
"category_id": "abc123",
"description": "xyz789",
"long_description": "xyz789",
"base_specifications": {},
"primary_image_url": "xyz789",
"images": ["xyz789"],
"video_url": "xyz789",
"meta_title": "xyz789",
"meta_description": "xyz789",
"keywords": ["xyz789"],
"is_active": false,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "abc123",
"rejection_reason": "xyz789"
}
UpdateProductOfferInput
Fields
| Input Field | Description |
|---|---|
status - OfferStatusEnum
|
Offer status |
type - OfferTypeEnum
|
Offer type |
discount_value - Float
|
Discount value |
minimum_purchase_amount - Float
|
Minimum purchase amount |
maximum_discount_amount - Float
|
Maximum discount amount |
usage_limit - Int
|
Usage limit |
usage_count - Int
|
Usage count |
usage_limit_per_customer - Int
|
Usage limit per customer |
promo_code - String
|
Promo code |
category_filters - [String!]
|
Category filters |
brand_filters - [String!]
|
Brand filters |
applicable_channels - [String!]
|
Applicable channels |
active - Boolean
|
Is offer active? |
starts_at - DateTime
|
Offer start date |
ends_at - DateTime
|
Offer end date |
seller_id - String
|
Associated seller ID |
sku_id - String
|
Associated SKU ID |
Example
{
"status": "DRAFT",
"type": "PERCENTAGE",
"discount_value": 987.65,
"minimum_purchase_amount": 987.65,
"maximum_discount_amount": 987.65,
"usage_limit": 987,
"usage_count": 123,
"usage_limit_per_customer": 987,
"promo_code": "xyz789",
"category_filters": ["xyz789"],
"brand_filters": ["abc123"],
"applicable_channels": ["abc123"],
"active": false,
"starts_at": "2007-12-03T10:15:30Z",
"ends_at": "2007-12-03T10:15:30Z",
"seller_id": "abc123",
"sku_id": "xyz789"
}
UpdateProspectStageInput
Fields
| Input Field | Description |
|---|---|
applicationId - String!
|
|
stage - ProspectStage!
|
|
justification - String
|
Example
{
"applicationId": "xyz789",
"stage": "UNKNOWN",
"justification": "abc123"
}
UpdateRawCustomerWalletsInput
Fields
| Input Field | Description |
|---|---|
customer_id - String
|
Customer ID this wallet belongs to |
customer_wallet_available_balance - Float
|
Unallocated funds available in wallet |
customer_wallet_total_payments - Float
|
All payments received |
customer_wallet_total_adjustments - Float
|
Refunds, bonuses, penalties |
customer_wallet_total_days_given - Float
|
Grace days granted to customer |
customer_wallet_total_points - Float
|
Loyalty/reward points earned |
customer_wallet_total_allocated - Float
|
Money allocated to sales |
customer_wallet_lifetime_credits - Float
|
All money in (lifetime credits) |
customer_wallet_lifetime_debits - Float
|
All money out (lifetime debits) |
customer_wallet_currency - CurrencyEnum
|
Wallet currency |
Example
{
"customer_id": "abc123",
"customer_wallet_available_balance": 987.65,
"customer_wallet_total_payments": 123.45,
"customer_wallet_total_adjustments": 987.65,
"customer_wallet_total_days_given": 987.65,
"customer_wallet_total_points": 123.45,
"customer_wallet_total_allocated": 987.65,
"customer_wallet_lifetime_credits": 987.65,
"customer_wallet_lifetime_debits": 123.45,
"customer_wallet_currency": "KES"
}
UpdateRawCustomersInput
Fields
| Input Field | Description |
|---|---|
customer_type - CustomerTypeEnum
|
|
customer_phone_number - String
|
|
official_id_number - String
|
|
country - String
|
ISO 3166-1 alpha-2 country code e.g. KE |
county - String
|
|
sub_county - String
|
|
ward - String
|
|
town - String
|
|
customer_email_address - String
|
|
customer_status - CustomerStatusEnum
|
|
customer_first_name - String
|
|
customer_surname_name - String
|
|
individual_details - IndividualDetailsInput
|
|
organization_name - String
|
|
organization_registration_number - String
|
|
organization_details - OrganizationDetailsInput
|
|
contact_person - ContactPersonInput
|
|
total_loans_taken - Int
|
|
active_loans_count - Int
|
|
completed_loans_count - Int
|
|
has_defaulted - Boolean
|
|
current_credit_score - String
|
|
metadata - JSONObject
|
|
kyc_documents - KycDocumentsInput
|
|
next_of_kin - NextOfKinInput
|
|
referral_code - String
|
Example
{
"customer_type": "INDIVIDUAL",
"customer_phone_number": "abc123",
"official_id_number": "xyz789",
"country": "abc123",
"county": "xyz789",
"sub_county": "abc123",
"ward": "xyz789",
"town": "abc123",
"customer_email_address": "xyz789",
"customer_status": "ACTIVE",
"customer_first_name": "xyz789",
"customer_surname_name": "abc123",
"individual_details": IndividualDetailsInput,
"organization_name": "abc123",
"organization_registration_number": "abc123",
"organization_details": OrganizationDetailsInput,
"contact_person": ContactPersonInput,
"total_loans_taken": 123,
"active_loans_count": 123,
"completed_loans_count": 123,
"has_defaulted": false,
"current_credit_score": "xyz789",
"metadata": {},
"kyc_documents": KycDocumentsInput,
"next_of_kin": NextOfKinInput,
"referral_code": "xyz789"
}
UpdateRawRiskInput
Fields
| Input Field | Description |
|---|---|
block_type - RiskBlockTypeEnum
|
|
blocked_value - String
|
|
primary_id - String
|
|
primary_phone - String
|
|
phone_numbers - [String!]
|
|
associated_phone_numbers - [String!]
|
|
associated_ids - [String!]
|
|
reason - String
|
|
description - String
|
|
severity - RiskSeverityEnum
|
|
restricted_actions - [RiskRestrictedActionEnum!]
|
|
is_active - Boolean
|
|
effective_from - DateTime
|
|
expires_at - DateTime
|
Example
{
"block_type": "CUSTOMER",
"blocked_value": "xyz789",
"primary_id": "abc123",
"primary_phone": "xyz789",
"phone_numbers": ["xyz789"],
"associated_phone_numbers": ["abc123"],
"associated_ids": ["abc123"],
"reason": "xyz789",
"description": "abc123",
"severity": "LOW",
"restricted_actions": ["BLOCK_NEW_CUSTOMERS"],
"is_active": true,
"effective_from": "2007-12-03T10:15:30Z",
"expires_at": "2007-12-03T10:15:30Z"
}
UpdateRawWalletTransactionsInput
Fields
| Input Field | Description |
|---|---|
wallet_transaction_id - String
|
Unique wallet transaction identifier (auto-generated if not provided) |
wallet_id - String
|
Wallet ID this transaction belongs to |
customer_id - String
|
Customer ID this transaction belongs to |
sale_id - String
|
Sale ID for sale-specific transactions (NULL for unallocated) |
wallet_transaction_ref_id - String
|
Reference transaction ID for reversals/transfers |
wallet_transaction_type - WalletTransactionTypeEnum
|
Type of wallet transaction |
wallet_transaction_sub_type - WalletTransactionSubTypeEnum
|
Sub-type of wallet transaction |
wallet_transaction_amount - Float
|
Transaction amount |
wallet_transaction_balance_before - Float
|
Wallet balance before this transaction |
wallet_transaction_balance_after - Float
|
Wallet balance after this transaction |
wallet_transaction_days_value - Float
|
Days value for days_given transactions |
wallet_transaction_points_value - Float
|
Points value for points transactions |
wallet_transaction_status - WalletTransactionStatusEnum
|
Transaction status |
reference - String
|
External reference (M-Pesa code, bank ref, etc) |
wallet_transaction_description - String
|
Human-readable transaction description |
wallet_transaction_metadata - JSON
|
Additional flexible transaction data |
wallet_transaction_completed_at - DateTime
|
Transaction completion timestamp |
Example
{
"wallet_transaction_id": "xyz789",
"wallet_id": "abc123",
"customer_id": "xyz789",
"sale_id": "xyz789",
"wallet_transaction_ref_id": "abc123",
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 987.65,
"wallet_transaction_balance_before": 987.65,
"wallet_transaction_balance_after": 987.65,
"wallet_transaction_days_value": 987.65,
"wallet_transaction_points_value": 123.45,
"wallet_transaction_status": "PENDING",
"reference": "xyz789",
"wallet_transaction_description": "abc123",
"wallet_transaction_metadata": {},
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
UpdateRefundInput
Description
Update a refund record
Fields
| Input Field | Description |
|---|---|
status - RefundStatus
|
New status |
refund_method - RefundMethod
|
Refund method |
transaction_reference - String
|
Transaction reference |
notes - String
|
Notes |
rejection_reason - String
|
Rejection reason |
source_payment_id - String
|
Source payment ID used for payout adjustment linkage |
adjustment_id - String
|
Linked payment adjustment ID |
refund_workflow_type - RefundWorkflowType
|
Workflow that originated the refund |
Example
{
"status": "PENDING",
"refund_method": "MPESA",
"transaction_reference": "xyz789",
"notes": "xyz789",
"rejection_reason": "xyz789",
"source_payment_id": "abc123",
"adjustment_id": "xyz789",
"refund_workflow_type": "RETURN"
}
UpdateRegionInput
UpdateRepairInput
Fields
| Input Field | Description |
|---|---|
repair_display_id - String
|
Custom repair display ID (auto-generated if not provided) |
requires_technician - Boolean
|
Requires technician? |
inventory_id - String
|
Inventory item ID |
customer_id - String
|
Customer ID |
original_sale_id - String
|
Original sale ID |
provider_seller_id - String
|
Repair provider seller ID |
location_status - RepairLocationStatusEnum
|
Location status |
status - RepairStatusEnum
|
Repair status |
priority - RepairPriorityEnum
|
Repair priority level |
is_left_at_shop - Boolean
|
Is device left at shop? |
intake_details - JSON
|
Intake details |
outtake_details - JSON
|
Outtake details |
security - JSON
|
Security details |
issue_tag - String
|
Issue tag |
customer_complaint - String
|
Customer complaint description |
hq_diagnostic_notes - String
|
HQ diagnostic notes |
billing_type - RepairBillingTypeEnum
|
Billing type |
quoted_price - Float
|
Quoted price |
spares_cost - Float
|
Spares cost |
Example
{
"repair_display_id": "xyz789",
"requires_technician": true,
"inventory_id": "abc123",
"customer_id": "abc123",
"original_sale_id": "xyz789",
"provider_seller_id": "xyz789",
"location_status": "FRONT_DESK",
"status": "PENDING",
"priority": "LOW",
"is_left_at_shop": false,
"intake_details": {},
"outtake_details": {},
"security": {},
"issue_tag": "abc123",
"customer_complaint": "xyz789",
"hq_diagnostic_notes": "xyz789",
"billing_type": "WARRANTY",
"quoted_price": 987.65,
"spares_cost": 987.65
}
UpdateRetailOutletStaffInput
Fields
| Input Field | Description |
|---|---|
user - CreateSimpleUserInput
|
|
agent - UpdateAgentProfileInput
|
|
employee_id - String
|
|
reports_to_id - String
|
|
passport_photo - Upload
|
|
assigned_outlet_id - String
|
Example
{
"user": CreateSimpleUserInput,
"agent": UpdateAgentProfileInput,
"employee_id": "xyz789",
"reports_to_id": "abc123",
"passport_photo": Upload,
"assigned_outlet_id": "xyz789"
}
UpdateRetailerOrganizationInput
Fields
| Input Field | Description |
|---|---|
organization_name - String
|
|
assigned_sfm_id - String
|
|
location_details - LocationDetailsInput
|
|
incorporation_number - String
|
|
contact_person - String
|
|
contact_email - String
|
|
contact_phone - String
|
|
headquarters_location - LocationDetailsInput
|
Example
{
"organization_name": "xyz789",
"assigned_sfm_id": "abc123",
"location_details": LocationDetailsInput,
"incorporation_number": "abc123",
"contact_person": "xyz789",
"contact_email": "xyz789",
"contact_phone": "xyz789",
"headquarters_location": LocationDetailsInput
}
UpdateRetailerOutletInput
Fields
| Input Field | Description |
|---|---|
outlet_name - String
|
|
location - LocationDetailsInput
|
|
outlet_staff_user_ids - [String!]
|
Example
{
"outlet_name": "xyz789",
"location": LocationDetailsInput,
"outlet_staff_user_ids": ["abc123"]
}
UpdateReturnsInput
Description
Update general fields on a returns request
Fields
| Input Field | Description |
|---|---|
customer_notes - String
|
Customer notes |
Example
{"customer_notes": "xyz789"}
UpdateRoleInput
UpdateSFMInput
Fields
| Input Field | Description |
|---|---|
user - CreateSimpleUserInput
|
|
agent - UpdateAgentProfileInput
|
|
employee_id - String
|
|
reports_to_id - String
|
|
passport_photo - Upload
|
|
assigned_territories - [String!]
|
|
assigned_sfm_partners - [String!]
|
|
assigned_region - String
|
Example
{
"user": CreateSimpleUserInput,
"agent": UpdateAgentProfileInput,
"employee_id": "abc123",
"reports_to_id": "xyz789",
"passport_photo": Upload,
"assigned_territories": ["abc123"],
"assigned_sfm_partners": ["xyz789"],
"assigned_region": "abc123"
}
UpdateSalesInput
Fields
| Input Field | Description |
|---|---|
sale_date - DateTime
|
|
order_id - ID
|
|
customer_id - ID
|
|
inventory_id - ID
|
|
sale_agent_id - ID
|
|
submitting_agent_id - ID
|
|
sfm_id - ID
|
|
price_plan_id - ID
|
|
metadata - JSON
|
|
payment_type - SalesPaymentTypeEnum
|
|
payment_status - SalePaymentStatusEnum
|
|
normal_high_deposit - NormalHighDepositEnum
|
|
final_sale_price - Float
|
|
invoice_number - String
|
|
status - SaleLifecycleStatusEnum
|
|
return_date - DateTime
|
Example
{
"sale_date": "2007-12-03T10:15:30Z",
"order_id": 4,
"customer_id": 4,
"inventory_id": 4,
"sale_agent_id": "4",
"submitting_agent_id": "4",
"sfm_id": 4,
"price_plan_id": "4",
"metadata": {},
"payment_type": "REPAIR",
"payment_status": "UNPAID",
"normal_high_deposit": "NORMAL",
"final_sale_price": 123.45,
"invoice_number": "xyz789",
"status": "ACTIVE",
"return_date": "2007-12-03T10:15:30Z"
}
UpdateSellerCatalogInput
Fields
| Input Field | Description |
|---|---|
seller_id - String
|
Seller ID |
sku_id - String
|
SKU ID |
cost_price - Float
|
Seller cost price |
retail_price - Float
|
Retail price |
currency - String
|
Currency code |
stock_on_hand - Int
|
Stock quantity on hand |
reserved_stock - Int
|
Reserved stock quantity |
is_active - Boolean
|
Is listing active? |
Example
{
"seller_id": "abc123",
"sku_id": "xyz789",
"cost_price": 123.45,
"retail_price": 123.45,
"currency": "abc123",
"stock_on_hand": 987,
"reserved_stock": 123,
"is_active": false
}
UpdateSellerInput
Fields
| Input Field | Description |
|---|---|
partner_profile_id - String
|
Partner profile ID |
commission_type_id - String
|
Commission type |
tier_id - String
|
Seller tier |
seller_type - SellerTypeEnum
|
Type of seller |
payment_details - JSON
|
Payment details |
capabilities - JSON
|
Seller capabilities |
performance_metrics - JSON
|
Performance metrics |
overall_rating - Float
|
Overall rating (0-5) |
total_reviews - Int
|
Total number of reviews |
total_sales - Int
|
Total sales count |
total_orders_365_days - Int
|
Orders in last 365 days |
badges - [String!]
|
Achievement badges |
suspension_reason - String
|
Reason for suspension |
approved_by - String
|
Who approved the seller |
platform_owner - Boolean
|
Platform oner |
Example
{
"partner_profile_id": "abc123",
"commission_type_id": "xyz789",
"tier_id": "xyz789",
"seller_type": "INTERNAL",
"payment_details": {},
"capabilities": {},
"performance_metrics": {},
"overall_rating": 123.45,
"total_reviews": 123,
"total_sales": 987,
"total_orders_365_days": 987,
"badges": ["abc123"],
"suspension_reason": "abc123",
"approved_by": "abc123",
"platform_owner": true
}
UpdateSellerTierInput
UpdateShopAttendantInput
UpdateShopManagerInput
Fields
| Input Field | Description |
|---|---|
user - CreateSimpleUserInput
|
|
agent - UpdateAgentProfileInput
|
|
employee_id - String
|
|
reports_to_id - String
|
|
passport_photo - Upload
|
|
assigned_shop_id - String
|
Example
{
"user": CreateSimpleUserInput,
"agent": UpdateAgentProfileInput,
"employee_id": "xyz789",
"reports_to_id": "xyz789",
"passport_photo": Upload,
"assigned_shop_id": "xyz789"
}
UpdateShopOwnerInput
Example
{
"whatsapp_number": "abc123",
"secondary_number": "abc123",
"assigned_sfm_id": "xyz789",
"shop_name": "abc123",
"country": "xyz789",
"county": "abc123",
"sub_county": "abc123",
"town": "abc123",
"landmark": "abc123"
}
UpdateSkuAgentWhitelistInput
Fields
| Input Field | Description |
|---|---|
is_active - Boolean
|
Example
{"is_active": false}
UpdateSkuInput
Fields
| Input Field | Description |
|---|---|
product_id - String
|
Product ID |
condition_id - String
|
Condition ID |
parent_sku_id - String
|
Parent SKU ID |
level - Int
|
Hierarchy level. Defaults to 1 for roots. |
level_attribute_key - String
|
Hierarchy attribute key for this level |
level_attribute_value - String
|
Hierarchy attribute value for this level |
sku_code - String
|
Unique SKU code |
name - String
|
SKU name |
attributes - JSON
|
SKU attributes |
variant_specifications - JSON
|
Variant specifications |
msrp_price - Float
|
Original retail price |
min_seller_price - Float
|
Minimum seller price |
max_seller_price - Float
|
Maximum seller price |
suggested_retail_price - Float
|
Suggested retail price |
images - [String!]
|
SKU images |
weight_grams - Int
|
Weight in grams |
dimensions_mm - String
|
Dimensions in mm |
is_active - Boolean
|
Is SKU active? |
approval_status - ProductApprovalStatusEnum
|
Approval status |
submitted_by_seller_id - String
|
Seller who submitted it |
approved_by - String
|
Who approved it |
rejection_reason - String
|
Rejection reason |
Example
{
"product_id": "abc123",
"condition_id": "xyz789",
"parent_sku_id": "xyz789",
"level": 987,
"level_attribute_key": "abc123",
"level_attribute_value": "xyz789",
"sku_code": "abc123",
"name": "abc123",
"attributes": {},
"variant_specifications": {},
"msrp_price": 987.65,
"min_seller_price": 987.65,
"max_seller_price": 123.45,
"suggested_retail_price": 987.65,
"images": ["xyz789"],
"weight_grams": 123,
"dimensions_mm": "abc123",
"is_active": true,
"approval_status": "APPROVED",
"submitted_by_seller_id": "xyz789",
"approved_by": "abc123",
"rejection_reason": "xyz789"
}
UpdateStaffAvailabilityInput
UpdateSuperAgentInput
UpdateTelesalesAgentInput
Fields
| Input Field | Description |
|---|---|
user - CreateSimpleUserInput
|
|
agent - UpdateAgentProfileInput
|
|
employee_id - String
|
|
reports_to_id - String
|
|
passport_photo - Upload
|
Example
{
"user": CreateSimpleUserInput,
"agent": UpdateAgentProfileInput,
"employee_id": "abc123",
"reports_to_id": "xyz789",
"passport_photo": Upload
}
UpdateTerritoryInput
Example
{
"name": "xyz789",
"description": "abc123",
"ward_ids": ["4"],
"zone_ids": ["4"],
"region_id": 4,
"updated_by": "xyz789",
"is_active": true,
"metadata": {}
}
UpdateTrainerInput
Fields
| Input Field | Description |
|---|---|
user - CreateSimpleUserInput
|
|
agent - UpdateAgentProfileInput
|
|
employee_id - String
|
|
reports_to_id - String
|
|
passport_photo - Upload
|
|
specializations - [String!]
|
Example
{
"user": CreateSimpleUserInput,
"agent": UpdateAgentProfileInput,
"employee_id": "abc123",
"reports_to_id": "xyz789",
"passport_photo": Upload,
"specializations": ["xyz789"]
}
UpdateUserInput
Fields
| Input Field | Description |
|---|---|
username - String
|
|
email - String
|
|
first_name - String
|
|
surname - String
|
|
last_name - String
|
|
phone_number - String
|
|
enabled - Boolean
|
|
user_type - UserTypeEnum
|
|
is_internal - Boolean
|
|
last_login - DateTime
|
|
synced_at - DateTime
|
|
availability_status - UserAvailabilityStatusEnum
|
|
keycloak_id - String
|
Example
{
"username": "abc123",
"email": "abc123",
"first_name": "xyz789",
"surname": "abc123",
"last_name": "xyz789",
"phone_number": "abc123",
"enabled": false,
"user_type": "SYSTEM_ADMIN",
"is_internal": true,
"last_login": "2007-12-03T10:15:30Z",
"synced_at": "2007-12-03T10:15:30Z",
"availability_status": "AVAILABLE",
"keycloak_id": "xyz789"
}
UpdateVerificationRecordStatusInput
Description
Input for updating a verification record status
Fields
| Input Field | Description |
|---|---|
status - VerificationRecordStatus!
|
The new cache freshness status for this record |
justification - String!
|
Reason for changing the record status |
Example
{
"status": "ACTIVE",
"justification": "xyz789"
}
UpdateZoneInput
Example
{
"name": "xyz789",
"ward_id": "4",
"district_id": "4",
"lat": 987.65,
"lng": 987.65,
"radius_km": 987.65,
"polygon": {},
"is_active": false,
"updated_by": "abc123",
"metadata": {}
}
UpgradeToSuperAgentInput
Upload
Description
The Upload scalar type represents a file upload.
Example
Upload
UploadKycDocumentsInput
Example
{
"selfie_file": Upload,
"id_front_file": Upload,
"id_back_file": Upload,
"certificate_of_incorporation_file": Upload,
"tax_certificate_file": Upload,
"business_permit_file": Upload,
"associated_phone_numbers": ["abc123"]
}
UploadMediaAssetInput
Example
{
"domain": "xyz789",
"target": "abc123",
"target_id": "abc123",
"documentType": "abc123",
"file": Upload,
"password": "xyz789",
"tenant": "xyz789"
}
UploadQCReportInput
ValidationAction
Description
Action required based on validation result
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CASH_JOURNEY"
ValidationCheckType
Description
Type of validation check (CUSTOMER or NOK)
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CUSTOMER"
ValidationDataGraphQL
Fields
| Field Name | Description |
|---|---|
provider - String
|
Validation service provider |
error_message - String
|
Error message if validation failed |
verified_message - String
|
Success message if validation passed |
result_id - ID
|
ID of the validation result |
tenant_id - String
|
Tenant ID |
tenant_name - TenantNameEnum
|
Tenant name |
tag - String
|
Tag for categorization |
bucket - String
|
Storage bucket information |
exception_granted - Boolean
|
Whether exception was granted for external duplicates |
exception_details - String
|
Details about granted exception |
duplicate_details - [DuplicateDetailGraphQL!]
|
Details about found duplicates |
otp_details - OtpDetailGraphQL
|
OTP verification details |
Example
{
"provider": "abc123",
"error_message": "abc123",
"verified_message": "abc123",
"result_id": 4,
"tenant_id": "xyz789",
"tenant_name": "RESUBMISSION",
"tag": "xyz789",
"bucket": "xyz789",
"exception_granted": false,
"exception_details": "abc123",
"duplicate_details": [DuplicateDetailGraphQL],
"otp_details": OtpDetailGraphQL
}
ValidationDetailStatus
Description
Validation status of documents
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"VALID"
ValidationRecordFilterInput
Description
Filter input for validation record queries
Fields
| Input Field | Description |
|---|---|
target_id - String
|
Filter by target entity ID |
target - ValidationTarget
|
Filter by validation target |
type - ValidationType
|
Filter by validation type |
status - ValidationRecordStatus
|
Filter by validation status |
action - ValidationAction
|
Filter by validation action |
result - Boolean
|
Filter by validation result |
Example
{
"target_id": "xyz789",
"target": "LEAD",
"type": "CUSTOMER_IPRS",
"status": "RUNNING",
"action": "CASH_JOURNEY",
"result": false
}
ValidationRecordGraphQLEntity
Fields
| Field Name | Description |
|---|---|
_id - ID!
|
Unique validation record identifier |
target - ValidationTarget!
|
Target entity being validated |
target_id - ID!
|
ID of the target entity |
type - ValidationType!
|
Type of validation being performed |
status - ValidationRecordStatus!
|
Current status of validation |
action - ValidationAction
|
Action required based on validation result |
result - Boolean!
|
Validation result - true if passed, false if failed |
attempts_count - Float!
|
Number of validation attempts made |
max_attempts - Float!
|
Maximum number of attempts allowed |
data - ValidationDataGraphQL!
|
Detailed validation data and results |
createdAt - DateTime!
|
Record creation timestamp |
updatedAt - DateTime!
|
Record last update timestamp |
application - ApplicationEntityGraphQL
|
The application associated with this validation record |
Example
{
"_id": "4",
"target": "LEAD",
"target_id": 4,
"type": "CUSTOMER_IPRS",
"status": "RUNNING",
"action": "CASH_JOURNEY",
"result": false,
"attempts_count": 987.65,
"max_attempts": 987.65,
"data": ValidationDataGraphQL,
"createdAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"application": ApplicationEntityGraphQL
}
ValidationRecordStatus
Description
Current status of the validation record
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"RUNNING"
ValidationTarget
Description
Target type for validation
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"LEAD"
ValidationTargetFilterInput
Fields
| Input Field | Description |
|---|---|
eq - ValidationTarget
|
|
ne - ValidationTarget
|
|
in - [ValidationTarget!]
|
|
notIn - [ValidationTarget!]
|
Example
{"eq": "LEAD", "ne": "LEAD", "in": ["LEAD"], "notIn": ["LEAD"]}
ValidationType
Description
Type of validation being performed
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CUSTOMER_IPRS"
ValidationUpdatePayload
Description
Validation update payload for subscriptions
Fields
| Field Name | Description |
|---|---|
targetId - ID!
|
Application or resubmission ID |
type - ValidationType!
|
Type of validation |
status - ValidationRecordStatus!
|
Current status of validation |
result - Boolean!
|
Validation result - true if passed |
data - JSON
|
Additional validation data |
timestamp - DateTime!
|
Timestamp of the update |
Example
{
"targetId": "4",
"type": "CUSTOMER_IPRS",
"status": "RUNNING",
"result": false,
"data": {},
"timestamp": "2007-12-03T10:15:30Z"
}
VerificationRecordStatus
Description
Cache freshness state of a verification record
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ACTIVE"
VerifyDuplicateOtpInput
VerifyOtpInput
VerifyReturnsMpesaReferencePayloadType
Example
{
"verified": false,
"payment_id": "4",
"payment_amount": 123.45,
"payment_reconciliation_status": "xyz789",
"payment_provider_reference": "abc123"
}
ViewConfigFilterInput
Fields
| Input Field | Description |
|---|---|
target_entity - StringFilterInput
|
Example
{"target_entity": StringFilterInput}
ViewConfigInput
ViewConfigObjectType
ViewTargetEntityEnum
Description
Entity type a view applies to
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"APPLICATIONS"
VisibilityLevelEnum
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PUBLIC"
WalletTransactionStatusEnum
Description
Status of wallet transaction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"PENDING"
WalletTransactionSubTypeEnum
Description
Sub-type of wallet transaction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"MPESA"
WalletTransactionTypeEnum
Description
Type of wallet transaction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PAYMENT"
WalletTransactionsFilterInput
Fields
| Input Field | Description |
|---|---|
wallet_transaction_id - String
|
Unique wallet transaction identifier |
wallet_id - String
|
Wallet ID this transaction belongs to |
customer_id - String
|
Customer ID this transaction belongs to |
sale_id - String
|
Sale ID for sale-specific transactions |
wallet_transaction_ref_id - String
|
Reference transaction ID for reversals/transfers |
wallet_transaction_type - WalletTransactionTypeEnum
|
Type of wallet transaction |
wallet_transaction_sub_type - WalletTransactionSubTypeEnum
|
Sub-type of wallet transaction |
wallet_transaction_amount - Float
|
Transaction amount |
wallet_transaction_balance_before - Float
|
Wallet balance before this transaction |
wallet_transaction_balance_after - Float
|
Wallet balance after this transaction |
wallet_transaction_days_value - Float
|
Days value for days_given transactions |
wallet_transaction_points_value - Float
|
Points value for points transactions |
wallet_transaction_status - WalletTransactionStatusEnum
|
Transaction status |
reference - String
|
External reference (M-Pesa code, bank ref, etc) |
wallet_transaction_description - String
|
Human-readable transaction description |
wallet_transaction_metadata - JSON
|
Additional flexible transaction data |
wallet_transaction_completed_at - DateTime
|
Transaction completion timestamp |
Example
{
"wallet_transaction_id": "abc123",
"wallet_id": "abc123",
"customer_id": "xyz789",
"sale_id": "xyz789",
"wallet_transaction_ref_id": "xyz789",
"wallet_transaction_type": "PAYMENT",
"wallet_transaction_sub_type": "MPESA",
"wallet_transaction_amount": 123.45,
"wallet_transaction_balance_before": 987.65,
"wallet_transaction_balance_after": 123.45,
"wallet_transaction_days_value": 123.45,
"wallet_transaction_points_value": 987.65,
"wallet_transaction_status": "PENDING",
"reference": "abc123",
"wallet_transaction_description": "abc123",
"wallet_transaction_metadata": {},
"wallet_transaction_completed_at": "2007-12-03T10:15:30Z"
}
WorkScheduleInput
WorkScheduleType
Fields
| Field Name | Description |
|---|---|
working_days - [String!]!
|
|
shift_start - String
|
|
shift_end - String
|
|
is_flexible - Boolean!
|
Example
{
"working_days": ["abc123"],
"shift_start": "xyz789",
"shift_end": "xyz789",
"is_flexible": true
}
WorkflowSwitchType
Fields
| Field Name | Description |
|---|---|
from_type - ReturnsRequestType
|
|
to_type - ReturnsRequestType
|
|
switched_at - String
|
|
switched_by - String
|
|
reason - String
|
|
force_switch - Boolean
|
|
source_status - ReturnsStatus
|
|
child_request_id - ID
|
Example
{
"from_type": "SWAP",
"to_type": "SWAP",
"switched_at": "abc123",
"switched_by": "abc123",
"reason": "abc123",
"force_switch": false,
"source_status": "PENDING",
"child_request_id": "4"
}
paymentAndAdjustmentUnion
Types
| Union Types |
|---|
Example
PaymentsEntityType