Allomancy

Object reference

The request bodies, response bodies, shared types, and enum values used across the API.

This page is the canonical schema dictionary for the API. Endpoint pages link here for the full shape of each object.

Conventions

  • Field names are camelCase on the wire. The tables below use that casing.
  • Enums serialize as integers, not strings. A field typed as an enum comes back as a number; each enum's values are listed under Enums. This is the authoritative statement of that rule for the whole REST reference. The exceptions are a few fields that carry string values, each listed with its values in its table: scope on AppliedCouponResponse, status on WebhookSubscriptionListDto, and failureKind and diagnosticCode on WebhookFailureDto. Webhook event payloads are documented on the Webhooks page and name their enum values as strings.
  • Money fields are Linden Dollar (L$) amounts expressed as integers.
  • UUIDs are sent as their string GUID form (for example a1b2c3d4-e5f6-4789-9abc-def012345678). A field that identifies a resident, such as customerUuid, ownerUuid, or the uuid of an IdentityResponse, carries that resident's Second Life UUID. The ids of records Allomancy creates, such as webhook subscriptions and events, are generated by Allomancy.
  • Dates are ISO 8601 timestamps in UTC (for example 2026-04-27T15:42:00Z).

Enums

DiscountType

The type field of a Discount.

ValueName
0Percent
1Flat
2Override

CouponApplyScope

The scope field of an ApplyCouponRequest and a RevokeCouponRequest. The matching AppliedCouponResponse returns the scope as a string ("store" or "product") rather than the integer.

ValueName
0store-wide
1product

VendorType

The type field of a VendorResponse and an UpdateVendorRequest.

ValueName
0Default
1MultiMenuVendor
2Multivendor
3PaymentTerminal
4GachaVendor

ClickAction

The clickAction field of a VendorResponse and an UpdateVendorRequest. It sets the object's click action inworld.

ValueName
0Touch
1Sit
2Buy
3Pay
4Open
5Play
6OpenMedia
7Zoom
8Disabled
9Ignore

TransactionType

The type field of a SaleResponse. Only 1 (Purchase) and 7 (Gacha) sales that were not imported fire the sale.completed webhook.

ValueName
0Other
1Purchase
2PaymentTerminal
3Redelivery
4Website
5Blog
6Raffle
7Gacha
8LuckyChair
9MidnightWin

Shared types

Permissions

The Second Life permission flags on a product.

FieldTypeNotes
copybooleanCopy permission.
modifybooleanModify permission.
transferbooleanTransfer permission.

Discount

A discount attached to a product.

FieldTypeNotes
valueintegerThe discount amount. Its meaning depends on type.
typeintegerA DiscountType value (0, 1, or 2).
startDatestringWhen the discount starts (UTC).
endDatestringWhen the discount ends (UTC).
{
  "value": 10,
  "type": 0,
  "startDate": "2026-04-01T00:00:00Z",
  "endDate": "2026-05-01T00:00:00Z"
}

PurchaseBonus

The store's purchase-bonus configuration, returned on StoreResponse.

FieldTypeNotes
baseBonusintegerBase bonus percentage (0 to 100).
groupBonusintegerBonus percentage for residents in the store group (0 to 100).
creditExpiryDaysinteger or nullHow long bonus credit lasts after a customer earns it, in days (1 to 3650). One expiry covers both bonus percentages; null when bonus credit never expires.

Profit share (request)

The shape of each entry in a ProductUpsertRequest's profitShares array.

FieldTypeNotes
usernamestringThe recipient's Second Life username. Accepted but not required; the share is matched on userUuid.
userUuidstring (UUID)The recipient's Second Life UUID. This is the field the share is applied by.
percentintegerThe recipient's share percentage.

Profit share (response)

The shape of each entry in a ProductResponse's profitShares array.

FieldTypeNotes
userUuidstring (UUID)The recipient's Second Life UUID.
percentintegerThe recipient's share percentage.

IdentityResponse

A resident's identity: the merchant, payer, and receiver of a SaleResponse.

FieldTypeNotes
uuidstring (UUID)The resident's Second Life UUID.
usernamestringThe resident's current Second Life username.

Response bodies

ProductResponse

FieldTypeNotes
idstring (UUID)The product's UUID.
namestringThe product name.
priceinteger or nullThe listed price in L$.
activePriceinteger or nullThe price after any active discount, in L$.
imagestring (UUID) or nullThe product image texture UUID.
bloggablebooleanWhether bloggers can retrieve the product.
activebooleanWhether the product is active.
blockCreditsbooleanWhether store credit is blocked for the product.
itemstring or nullThe inworld item name.
limitedbooleanWhether the product has a limited stock count.
availableAmountintegerThe remaining stock when limited is true.
permissionsPermissionsThe Second Life permission flags.
discountDiscount or nullThe product's discount, if any.
descriptionstring or nullThe product description.
demoIdstring (UUID) or nullThe linked demo product's UUID.
mpListinginteger (int64) or nullThe id of the associated Second Life Marketplace listing, or null if the product has no linked listing.
profitSharesProfit share (response)[]The product's profit-share split.

ProductDeliveryResponse

FieldTypeNotes
productIdstring (UUID)The delivered product's UUID.
recipientUuidstring (UUID)The recipient's Second Life UUID.
recipientUsernamestringThe recipient's Second Life username.
queuedbooleanWhether the delivery was queued. Delivery happens asynchronously.
messagestringThe message sent with the delivery.

VendorResponse

FieldTypeNotes
idstring (UUID)The vendor's UUID.
namestringThe vendor name.
productIdstring (UUID) or nullThe linked product's UUID, or null if none.
productNamestring or nullThe linked product's name, or null if none.
syncNamebooleanWhether the vendor name follows the linked product's name.
activebooleanWhether the vendor is active.
trackablebooleanWhether the vendor is findable with the unit locator HUD.
priceintegerThe vendor price in L$. -1 means the vendor inherits the linked product's price.
imageFaceinteger or nullThe object face the vendor image uses (0 to 7), or null.
categoryIdstring (UUID) or nullThe linked category's UUID for a multi vendor, or null.
gachaIdstring (UUID) or nullThe linked gacha's UUID for a gacha vendor, or null.
groupOnlybooleanWhether the vendor sells only to residents in the store group.
discountintegerThe vendor discount percentage (0 to 100).
groupDiscountintegerThe discount percentage for residents in the store group (0 to 100).
blockCreditsbooleanWhether store credit is blocked at this vendor.
clickActioninteger or nullA ClickAction value, or null to keep the object's current click action.
touchToAcquirebooleanFor free products, whether touching the vendor delivers the item instead of opening the menu.
typeintegerA VendorType value.
regionstringThe Second Life region the vendor last reported, or an empty string if unknown.
positionstringThe vendor's last reported position, or an empty string if unknown.
useLetterMenubooleanWhether the vendor's inworld menu labels its product buttons with letters (A, B, C) instead of numbers (1, 2, 3).

CustomerResponse

FieldTypeNotes
uuidstring (UUID)The customer's Second Life UUID.
usernamestringThe customer's Second Life username.
creditintegerStore credit balance in L$.
restrictedCreditintegerRestricted store credit in L$ (cannot be used for gifting).
discountintegerThe per-customer discount percentage.
newsSubscriberbooleanWhether the customer subscribes to the store news kiosk.
isBannedbooleanWhether the customer is banned from the store.

CustomerCreditResponse

FieldTypeNotes
uuidstring (UUID)The customer's Second Life UUID.
usernamestringThe customer's Second Life username.
creditintegerStore credit balance in L$.
restrictedCreditintegerRestricted store credit in L$.

CustomerSpendResponse

FieldTypeNotes
uuidstring (UUID)The customer's Second Life UUID.
usernamestringThe customer's Second Life username.
sumintegerLifetime spend in L$.
lastYearSumintegerSpend over the last year in L$.
totalOwnedintegerThe number of products the customer owns.

CustomerBanStateResponse

FieldTypeNotes
uuidstring (UUID)The customer's Second Life UUID.
usernamestringThe customer's Second Life username.
isBannedbooleanThe ban state after the action.

MintCustomerTokenResponse

FieldTypeNotes
tokenstringThe opaque customer access token. The customer page reads it from the #ct= fragment and sends it as the X-Customer-Token header.
urlstringA ready-formed link to the customer page with the token in the #ct= fragment. The origin is your store's configured customer page origin, or, for a token minted with collectiveId, the collective's customer page origin.
expiresAtstringWhen the token expires (UTC). The token is short-lived.

CategoryResponse

FieldTypeNotes
idstring (UUID)The category's UUID.
namestringThe category name.
productCountintegerThe number of products in the category.

CouponResponse

FieldTypeNotes
idstring (UUID)The coupon's UUID.
codestringThe coupon code.
activebooleanWhether the coupon is active.
bloggersSyncbooleanWhether the coupon is synced with the blogger program.
couponOwnerUuidstring (UUID)The owner's Second Life UUID.
couponOwnerUsernamestringThe owner's Second Life username.
discountintegerThe customer discount percentage.
ownerProfitintegerThe owner profit percentage.
usesPerCustomerintegerHow many times each customer may use the coupon.
expirationstringWhen the coupon expires (UTC).

GiftCardResponse

FieldTypeNotes
idstring (UUID)The gift card's UUID.
storeIdstring (UUID)The UUID of the store the gift card belongs to.
ownerUuidstring (UUID)The owner's Second Life UUID.
ownerUsernamestringThe owner's Second Life username.
creditintegerThe gift card balance in L$.
activebooleanWhether the gift card is active.
redeemedbooleanWhether the gift card has been redeemed.
transferbooleanWhether the gift card is transferable.
texturestring (UUID) or nullThe gift card texture UUID.
purchasedbooleanWhether the gift card was purchased (rather than granted).
expiresAtstring or nullWhen the gift card expires (UTC), or null if it never expires.

StoreResponse

FieldTypeNotes
idstring (UUID)The store's UUID.
namestringThe store name.
logostring (UUID) or nullThe store logo texture UUID.
blogListedbooleanWhether the store is listed for bloggers.
applicationOpenbooleanWhether blogger applications are open.
bonusPurchaseBonusThe store's purchase-bonus configuration.
locationSlUrlstringA Second Life map URL for the store location, or an empty string when no location is set.
ownerUuidstring (UUID)The store owner's Second Life UUID.
ownerUsernamestringThe store owner's Second Life username.

LoyaltyTierResponse

FieldTypeNotes
spendingThresholdintegerThe L$ spend required to reach the tier.
discountPercentageintegerThe discount the tier grants.
isGroupOnlybooleanWhether the tier applies only to residents in the store group.
isLastYearOnlybooleanWhether the threshold is measured against the last year's spend rather than lifetime spend.

AppliedCouponResponse

FieldTypeNotes
couponIdstring (UUID)The applied coupon's UUID.
codestringThe coupon code.
discountintegerThe coupon's customer discount percentage.
scopestringThe application scope, store or product. The request sends scope as an integer; the response returns it as this string.
productIdstring (UUID) or nullThe product for a product-scope application; null for a store-wide application.
customerUuidstring (UUID)The customer the coupon was applied to.
customerUsernamestringThe Second Life username of the customer the coupon was applied to.
expiresAtstringWhen the application lapses (UTC).
replacedbooleanWhether this overwrote an existing application for the same customer at the same scope.

RevokedCouponResponse

FieldTypeNotes
revokedbooleanWhether a matching application was removed. false when none existed.

SaleResponse

A row of List sales. Names and product state are current values, not the values at the time of the sale.

FieldTypeNotes
idstring (UUID)The sale's id. It matches transactionId in a sale.completed webhook.
paymentintegerThe amount paid, in L$.
netIncomeintegerThe sale's net income, in L$.
locationstring or nullWhere the sale happened, as reported inworld, or null.
productIdstring (UUID)The product's UUID.
productNamestringThe product's current name.
productActivebooleanWhether the product is currently active. false for a paused product.
productDeletionTimestring or nullWhen the product was deleted (UTC), or null if it was not.
merchantIdentityResponseThe store owner.
payerIdentityResponseThe resident who paid.
receiverIdentityResponseThe resident who received the product. It differs from the payer for a gift.
deliveredbooleanWhether the product was delivered.
failedToDeliverbooleanWhether delivery failed after retrying.
typeintegerA TransactionType value.
importedbooleanWhether the sale was imported or added manually rather than recorded by an inworld sale.
couponCodestring or nullThe code of the coupon used, even if the coupon or the product was deleted since; null when no coupon was used.
deletionDatestring or nullWhen the sale was deleted (UTC), or null if it was not.
createdstringWhen the sale was recorded (UTC).
updatedstringWhen the sale was last updated (UTC).

WebhookSubscriptionListDto

A webhook subscription. The signing secret is never returned.

FieldTypeNotes
idstring (UUID)The subscription's UUID.
namestringThe subscription's name.
urlstringThe URL events are sent to.
eventTypesstring[]The event types the subscription receives, such as sale.completed.
isActivebooleanWhether the subscription receives events.
consecutiveFailuresintegerThe number of failed events since the last successful delivery or the last enable. It keeps counting while the subscription is inactive.
disabledAtstring or nullWhen the subscription was disabled (UTC), or null while it is active.
statusstringactive, disabledByMerchant (disabled on purpose), or disabledByDeliveryFailures (disabled automatically after 10 consecutive failed events).
insecureTransportbooleantrue when the URL uses http, so payloads can be read in transit.
createdstringWhen the subscription was created (UTC).
updatedstringWhen the subscription was last updated (UTC).

WebhookFailureDto

A row of List delivery failures: one event that ended in a failure.

FieldTypeNotes
idstring (UUID)The failure record's UUID.
subscriptionIdstring (UUID)The subscription's UUID.
subscriptionNamestringThe subscription's name.
eventIdstring (UUID)The failed event's id, the value of its webhook-id header.
eventTypestringThe failed event's type.
failureKindstringhttp, timeout, network, or validation.
responseStatusinteger or nullThe HTTP status your endpoint answered with, or null when no answer was received.
attemptCountintegerThe number of attempts that reached your endpoint or tried to. 0 when the event failed a check before any attempt.
diagnosticCodestringhttp_status, redirect_refused, timeout, dns_failure, connection_failed, invalid_url, invalid_secret, destination_refused, or unclassified. Each code's meaning is on List delivery failures.
errorstringThe fixed explanation for the diagnosticCode.
createdstringWhen the failure was recorded (UTC).

WebhookEventTypeDto

An entry of List event types.

FieldTypeNotes
namestringThe event type, such as sale.completed.
descriptionstringA short description of the event.
isSelectablebooleanWhether a subscription can select this event type. false for test.ping.

WebhookTestQueuedDto

The response of Send a test event.

FieldTypeNotes
eventIdstring (UUID)The test event's id. It arrives as the webhook-id header.
queuedAtstringWhen the test event was queued (UTC).

Request bodies

ProductUpsertRequest

The body for creating and updating a product.

FieldTypeNotes
namestringRequired. The product name.
priceintegerThe listed price in L$. Optional; defaults to 0.
imagestring (UUID) or nullThe product image texture UUID.
listedbooleanWhether the product is listed. Optional; defaults to false.
bloggablebooleanWhether bloggers can retrieve the product. Optional; defaults to false.
permissionsPermissions or nullThe Second Life permission flags. Optional; if omitted, defaults to { copy: true, modify: false, transfer: false }.
discountDiscount or nullThe product's discount.
availableAmountintegerThe stock count when limited is true. Optional; defaults to 0.
limitedbooleanWhether the product has a limited stock count. Optional; defaults to false.
itemstring or nullThe inworld item name.
blockCreditsbooleanWhether store credit is blocked for the product. Optional; defaults to false.
descriptionstring or nullThe product description.
profitSharesProfit share (request)[] or nullThe product's profit-share split.
demoIdstring (UUID) or nullThe linked demo product's UUID.
activebooleanWhether the product is active. Optional; defaults to true.

DeliverProductRequest

FieldTypeNotes
recipientIdentifierstringRequired. The recipient's Second Life UUID or username.
messagestring or nullAn optional message, up to 250 characters.

UpdateVendorRequest

The body for updating a vendor. It replaces the vendor's fields, so an omitted field is set to its default rather than left at its previous value. The one exception is useLetterMenu: omitted or null, it keeps its current value.

FieldTypeNotes
namestringThe vendor name, at most 63 characters. Applied unless syncName is true and type is Default or GachaVendor; for those two types the name follows the linked product or gacha and this value is ignored. Every other type uses the value you send.
productIdstring (UUID) or nullThe product to link, or null for none. Must be a product in the store when changed.
syncNamebooleanWhether the vendor name follows the linked product's name. Optional; defaults to false. Governs whether name is applied.
activebooleanWhether the vendor is active. Optional; defaults to false.
trackablebooleanWhether the vendor is findable with the unit locator HUD. Optional; defaults to false.
priceinteger or nullThe vendor price in L$. Optional; omit or send null to inherit the linked product's price (stored as -1). A sent value must be -1 (inherit) or 0 or greater.
imageFaceinteger or nullThe object face for the vendor image. Optional; must be 0 to 7 when sent.
categoryIdstring (UUID) or nullThe category to link for a multi vendor. Optional in general, but required when type is 1 (MultiMenuVendor). Must be a category in the store.
gachaIdstring (UUID) or nullThe gacha to link for a gacha vendor. Optional in general, but required when type is 4 (GachaVendor). Must be a gacha in the store.
groupOnlybooleanWhether the vendor sells only to residents in the store group. Optional; defaults to false.
discountintegerThe vendor discount percentage. Optional; defaults to 0; must be 0 to 100.
groupDiscountintegerThe store-group discount percentage. Optional; defaults to 0; must be 0 to 100 and at least discount.
blockCreditsbooleanWhether store credit is blocked at this vendor. Optional; defaults to false.
clickActioninteger or nullA ClickAction value, or null to keep the object's current click action. Optional.
touchToAcquirebooleanFor free products, whether touching the vendor delivers the item. Optional; defaults to false.
typeintegerA VendorType value. Optional; defaults to 0 (Default). Values 1 and 4 require categoryId and gachaId respectively.
useLetterMenuboolean or nullWhether the vendor's inworld menu labels its product buttons with letters (A, B, C) instead of numbers (1, 2, 3). Optional; omit or send null to keep the current value.

UpdateCustomerRequest

FieldTypeNotes
discountintegerThe per-customer discount percentage (0 to 100). Optional; defaults to 0.
newsSubscriberbooleanWhether the customer subscribes to the store news kiosk. Optional; defaults to false.

SetCustomerCreditRequest

FieldTypeNotes
creditintegerThe new credit balance in L$ (0 or greater). Optional; defaults to 0.
expiresAtstring or nullOptional ISO 8601 datetime. When set with a positive credit, the whole new balance is placed in one lot that expires at this time. Must be in the future; a past value is rejected with 400. Omit for a balance that does not expire.

IncrementCustomerCreditRequest

FieldTypeNotes
deltaintegerRequired; must be non-zero. The change to apply, in L$. Positive adds credit, negative removes it.
expiresAtstring or nullOptional ISO 8601 datetime. When set with a positive delta, the added credit forms one lot that expires at this time. Cannot be combined with a negative delta, which returns 400. Omit for credit that does not expire.

GrantGiftCardRequest

FieldTypeNotes
creditintegerRequired; 1 or greater. The gift card balance in L$.
texturestring (UUID) or nullThe gift card texture UUID.
transferbooleanWhether the gift card is transferable. Optional; defaults to false.
validDaysinteger or nullOptional. The number of days the gift card is valid, from 1 to 3650; it expires that many days after it is granted. Omit or send null for a card that never expires.

BanCustomerRequest

The body is optional on the ban action.

FieldTypeNotes
reasonstring or nullAn optional ban reason, up to 500 characters.

MintCustomerTokenRequest

FieldTypeNotes
customerIdentifierstringRequired. The customer's Second Life username or avatar UUID, resolved server-side.
collectiveIdstring (UUID) or nullOptional. When set, mints a token scoped to a collective instead of the store; only the collective's owner store can mint this way, and only for a customer of the authenticated store. Omit for a store-scoped token.

CreateCategoryRequest

FieldTypeNotes
namestringRequired. The category name, 1 to 100 characters.

UpdateCategoryRequest

FieldTypeNotes
namestringRequired. The category name, 1 to 100 characters.

CreateCouponRequest

FieldTypeNotes
codestringRequired. The coupon code.
discountintegerThe customer discount percentage. Optional; defaults to 0.
ownerProfitintegerThe owner profit percentage. Optional; defaults to 0.
ownerIdentifierstringRequired. The owner's Second Life UUID or username; it must resolve to an avatar.
activebooleanWhether the coupon is active. Optional; defaults to true.
bloggersSyncbooleanWhether the coupon is synced with the blogger program. Optional; defaults to false.

UpdateCouponRequest

The owner cannot be changed on update; it stays as set at creation.

FieldTypeNotes
codestringRequired. The coupon code.
discountintegerThe customer discount percentage. Optional; defaults to 0.
ownerProfitintegerThe owner profit percentage. Optional; defaults to 0.
activebooleanWhether the coupon is active. Optional; defaults to true.
bloggersSyncbooleanWhether the coupon is synced with the blogger program. Optional; defaults to false.

UpdateGiftCardRequest

FieldTypeNotes
creditintegerThe gift card balance in L$ (0 or greater). Optional; defaults to 0.
texturestring (UUID) or nullThe gift card texture UUID.
transferbooleanWhether the gift card is transferable. Optional; defaults to false.
activebooleanWhether the gift card is active. Optional; defaults to false.

ApplyCouponRequest

The body for Apply a coupon to a customer. Provide exactly one of code, couponOwnerUuid, or couponId to identify the coupon.

FieldTypeNotes
codestring or nullThe coupon code. One of the three coupon identifiers; provide exactly one.
couponOwnerUuidstring (UUID) or nullThe coupon owner's Second Life UUID. One of the three coupon identifiers; provide exactly one.
couponIdstring (UUID) or nullThe coupon's UUID. One of the three coupon identifiers; provide exactly one.
scopeintegerRequired. A CouponApplyScope value: 0 store-wide, 1 product.
productIdstring (UUID) or nullThe product to scope to. Required when scope is 1; must be omitted when scope is 0.
expiresInHoursinteger or nullHow long the application lasts before it lapses. Optional; defaults to 24; must be between 1 and 168.

RevokeCouponRequest

The body for Revoke a coupon from a customer. The same coupon-identifier and scope rules as ApplyCouponRequest, without expiresInHours.

FieldTypeNotes
codestring or nullThe coupon code. One of the three coupon identifiers; provide exactly one.
couponOwnerUuidstring (UUID) or nullThe coupon owner's Second Life UUID. One of the three coupon identifiers; provide exactly one.
couponIdstring (UUID) or nullThe coupon's UUID. One of the three coupon identifiers; provide exactly one.
scopeintegerRequired. A CouponApplyScope value: 0 store-wide, 1 product.
productIdstring (UUID) or nullThe product to scope to. Required when scope is 1; must be omitted when scope is 0.

WebhookSubscriptionRequest

The body for both Create a subscription and Update a subscription. Unknown properties are ignored.

FieldTypeNotes
namestringRequired. 3 to 128 characters, unique among the store's active subscriptions.
urlstringRequired. The URL to send events to; it must meet the destination URL requirements.
signingSecretstring or nullA whsec_ secret: whsec_ followed by the padded standard base64 encoding of 24 to 64 bytes. Required on create. Optional on update: omit it or send null to keep the current secret, or send a new secret to replace it; an empty string is rejected.
eventTypesstring[]Required. At least one event type; duplicates are collapsed. A new type must be selectable (sale.completed, payment.received, marketplace.sale.completed, redelivery.completed or marketplace.redelivery.completed). On update, a type the subscription already has may stay even if it is no longer selectable.

On this page