shopify_draft_proxy/state/types

Mirrors the slices of src/state/types.ts that the Gleam port currently exercises. Only resource types this port knows about are included; everything else is deliberately deferred until the corresponding domain handler lands.

Putting the resource records here (rather than in either the state/store or proxy/saved_searches module) avoids a circular import: the store needs to know the shapes of the records it stores, and the domain handler needs to read them back; both depend on this module.

Types

pub type AbandonedCheckoutRecord {
  AbandonedCheckoutRecord(
    id: String,
    cursor: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

pub type AbandonmentDeliveryActivityRecord {
  AbandonmentDeliveryActivityRecord(
    marketing_activity_id: String,
    delivery_status: String,
    delivered_at: option.Option(String),
    delivery_status_change_reason: option.Option(String),
  )
}

Constructors

  • AbandonmentDeliveryActivityRecord(
      marketing_activity_id: String,
      delivery_status: String,
      delivered_at: option.Option(String),
      delivery_status_change_reason: option.Option(String),
    )
pub type AbandonmentRecord {
  AbandonmentRecord(
    id: String,
    abandoned_checkout_id: option.Option(String),
    cursor: option.Option(String),
    data: CapturedJsonValue,
    delivery_activities: dict.Dict(
      String,
      AbandonmentDeliveryActivityRecord,
    ),
  )
}

Constructors

Mirrors AccessScopeRecord. description is None for scopes the proxy invents locally; upstream-hydrated scopes may carry one.

pub type AccessScopeRecord {
  AccessScopeRecord(
    handle: String,
    description: option.Option(String),
  )
}

Constructors

  • AccessScopeRecord(
      handle: String,
      description: option.Option(String),
    )

Audit record for locally handled flowGenerateSignature. The proxy stores hashes rather than the raw signature or payload.

pub type AdminPlatformFlowSignatureRecord {
  AdminPlatformFlowSignatureRecord(
    id: String,
    flow_trigger_id: String,
    payload_sha256: String,
    signature_sha256: String,
    created_at: String,
  )
}

Constructors

  • AdminPlatformFlowSignatureRecord(
      id: String,
      flow_trigger_id: String,
      payload_sha256: String,
      signature_sha256: String,
      created_at: String,
    )

Audit record for locally handled flowTriggerReceive. The external Flow trigger delivery side effect is intentionally not attempted by the draft proxy.

pub type AdminPlatformFlowTriggerRecord {
  AdminPlatformFlowTriggerRecord(
    id: String,
    handle: String,
    payload_bytes: Int,
    payload_sha256: String,
    received_at: String,
  )
}

Constructors

  • AdminPlatformFlowTriggerRecord(
      id: String,
      handle: String,
      payload_bytes: Int,
      payload_sha256: String,
      received_at: String,
    )
pub type AdminPlatformGenericNodeRecord {
  AdminPlatformGenericNodeRecord(
    id: String,
    typename: String,
    data: CapturedJsonValue,
  )
}

Constructors

  • AdminPlatformGenericNodeRecord(
      id: String,
      typename: String,
      data: CapturedJsonValue,
    )
pub type AdminPlatformTaxonomyCategoryRecord {
  AdminPlatformTaxonomyCategoryRecord(
    id: String,
    cursor: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

Mirrors AppInstallationRecord. The proxy treats the “current installation” as a singleton in the store; this record captures everything else.

pub type AppInstallationRecord {
  AppInstallationRecord(
    id: String,
    app_id: String,
    launch_url: option.Option(String),
    uninstall_url: option.Option(String),
    access_scopes: List(AccessScopeRecord),
    active_subscription_ids: List(String),
    all_subscription_ids: List(String),
    one_time_purchase_ids: List(String),
    uninstalled_at: option.Option(String),
  )
}

Constructors

  • AppInstallationRecord(
      id: String,
      app_id: String,
      launch_url: option.Option(String),
      uninstall_url: option.Option(String),
      access_scopes: List(AccessScopeRecord),
      active_subscription_ids: List(String),
      all_subscription_ids: List(String),
      one_time_purchase_ids: List(String),
      uninstalled_at: option.Option(String),
    )

Mirrors AppOneTimePurchaseRecord.

pub type AppOneTimePurchaseRecord {
  AppOneTimePurchaseRecord(
    id: String,
    name: String,
    status: String,
    is_test: Bool,
    created_at: String,
    price: Money,
  )
}

Constructors

  • AppOneTimePurchaseRecord(
      id: String,
      name: String,
      status: String,
      is_test: Bool,
      created_at: String,
      price: Money,
    )

Mirrors AppRecord. Most fields are nullable in TS to model partially populated upstream responses; the proxy’s locally-minted default app fills them all in.

pub type AppRecord {
  AppRecord(
    id: String,
    api_key: option.Option(String),
    handle: option.Option(String),
    title: option.Option(String),
    developer_name: option.Option(String),
    embedded: option.Option(Bool),
    previously_installed: option.Option(Bool),
    requested_access_scopes: List(AccessScopeRecord),
  )
}

Constructors

Mirrors AppSubscriptionLineItemRecord['plan']. The TS schema is Record<string, jsonValue>; we model the only shape the handler actually produces — { pricingDetails: ... } — so consumers get type-checked access.

pub type AppSubscriptionLineItemPlan {
  AppSubscriptionLineItemPlan(
    pricing_details: AppSubscriptionPricing,
  )
}

Constructors

Mirrors AppSubscriptionLineItemRecord.

pub type AppSubscriptionLineItemRecord {
  AppSubscriptionLineItemRecord(
    id: String,
    subscription_id: String,
    plan: AppSubscriptionLineItemPlan,
  )
}

Constructors

Pricing shape attached to a subscription line item. Mirrors the AppRecurringPricing / AppUsagePricing __typename discriminated union — typed here as a sum so the variants can’t get mixed.

pub type AppSubscriptionPricing {
  AppRecurringPricing(
    price: Money,
    interval: String,
    plan_handle: option.Option(String),
  )
  AppUsagePricing(
    capped_amount: Money,
    balance_used: Money,
    interval: String,
    terms: option.Option(String),
  )
}

Constructors

Mirrors AppSubscriptionRecord.

pub type AppSubscriptionRecord {
  AppSubscriptionRecord(
    id: String,
    name: String,
    status: String,
    is_test: Bool,
    trial_days: option.Option(Int),
    current_period_end: option.Option(String),
    created_at: String,
    line_item_ids: List(String),
  )
}

Constructors

  • AppSubscriptionRecord(
      id: String,
      name: String,
      status: String,
      is_test: Bool,
      trial_days: option.Option(Int),
      current_period_end: option.Option(String),
      created_at: String,
      line_item_ids: List(String),
    )

Mirrors AppUsageRecord.

pub type AppUsageRecord {
  AppUsageRecord(
    id: String,
    subscription_line_item_id: String,
    description: String,
    price: Money,
    created_at: String,
    idempotency_key: option.Option(String),
  )
}

Constructors

  • AppUsageRecord(
      id: String,
      subscription_line_item_id: String,
      description: String,
      price: Money,
      created_at: String,
      idempotency_key: option.Option(String),
    )
pub type B2BCompanyContactRecord {
  B2BCompanyContactRecord(
    id: String,
    cursor: option.Option(String),
    company_id: String,
    data: dict.Dict(String, StorePropertyValue),
  )
}

Constructors

pub type B2BCompanyContactRoleRecord {
  B2BCompanyContactRoleRecord(
    id: String,
    cursor: option.Option(String),
    company_id: String,
    data: dict.Dict(String, StorePropertyValue),
  )
}

Constructors

pub type B2BCompanyLocationRecord {
  B2BCompanyLocationRecord(
    id: String,
    cursor: option.Option(String),
    company_id: String,
    data: dict.Dict(String, StorePropertyValue),
  )
}

Constructors

JSON-shaped B2B company row. Relationships are normalized as Shopify GIDs so contacts, locations, and roles can be updated independently.

pub type B2BCompanyRecord {
  B2BCompanyRecord(
    id: String,
    cursor: option.Option(String),
    data: dict.Dict(String, StorePropertyValue),
    contact_ids: List(String),
    location_ids: List(String),
    contact_role_ids: List(String),
  )
}

Constructors

Mirrors the captured MarketRegionCountry shape used by backupRegion and backupRegionUpdate.

pub type BackupRegionRecord {
  BackupRegionRecord(id: String, name: String, code: String)
}

Constructors

  • BackupRegionRecord(id: String, name: String, code: String)

Mirrors BulkOperationRecord in src/state/types.ts. result_jsonl is intentionally stored on the record in Gleam rather than a second side-map until the HTTP result-file route ports.

pub type BulkOperationRecord {
  BulkOperationRecord(
    id: String,
    status: String,
    type_: String,
    error_code: option.Option(String),
    created_at: String,
    completed_at: option.Option(String),
    object_count: String,
    root_object_count: String,
    file_size: option.Option(String),
    url: option.Option(String),
    partial_data_url: option.Option(String),
    query: option.Option(String),
    cursor: option.Option(String),
    result_jsonl: option.Option(String),
  )
}

Constructors

pub type CalculatedOrderRecord {
  CalculatedOrderRecord(id: String, data: CapturedJsonValue)
}

Constructors

pub type CapturedJsonValue {
  CapturedNull
  CapturedBool(Bool)
  CapturedInt(Int)
  CapturedFloat(Float)
  CapturedString(String)
  CapturedArray(List(CapturedJsonValue))
  CapturedObject(List(#(String, CapturedJsonValue)))
}

Constructors

  • CapturedNull
  • CapturedBool(Bool)
  • CapturedInt(Int)
  • CapturedFloat(Float)
  • CapturedString(String)
  • CapturedArray(List(CapturedJsonValue))
  • CapturedObject(List(#(String, CapturedJsonValue)))
pub type CarrierServiceRecord {
  CarrierServiceRecord(
    id: String,
    name: option.Option(String),
    formatted_name: option.Option(String),
    callback_url: option.Option(String),
    active: Bool,
    supports_service_discovery: Bool,
    created_at: String,
    updated_at: String,
  )
}

Constructors

  • CarrierServiceRecord(
      id: String,
      name: option.Option(String),
      formatted_name: option.Option(String),
      callback_url: option.Option(String),
      active: Bool,
      supports_service_discovery: Bool,
      created_at: String,
      updated_at: String,
    )

Mirrors CartTransformRecord. Same shape as ValidationRecord minus the enable flag.

pub type CartTransformRecord {
  CartTransformRecord(
    id: String,
    title: option.Option(String),
    block_on_failure: option.Option(Bool),
    function_id: option.Option(String),
    function_handle: option.Option(String),
    shopify_function_id: option.Option(String),
    created_at: option.Option(String),
    updated_at: option.Option(String),
  )
}

Constructors

Mirrors CatalogRecord in src/state/types.ts.

pub type CatalogRecord {
  CatalogRecord(
    id: String,
    cursor: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

pub type ChannelRecord {
  ChannelRecord(
    id: String,
    name: option.Option(String),
    handle: option.Option(String),
    publication_id: option.Option(String),
    cursor: option.Option(String),
  )
}

Constructors

pub type CollectionImageRecord {
  CollectionImageRecord(
    id: option.Option(String),
    alt_text: option.Option(String),
    url: option.Option(String),
    width: option.Option(Int),
    height: option.Option(Int),
  )
}

Constructors

pub type CollectionRecord {
  CollectionRecord(
    id: String,
    legacy_resource_id: option.Option(String),
    title: String,
    handle: String,
    publication_ids: List(String),
    updated_at: option.Option(String),
    description: option.Option(String),
    description_html: option.Option(String),
    image: option.Option(CollectionImageRecord),
    sort_order: option.Option(String),
    template_suffix: option.Option(String),
    seo: ProductSeoRecord,
    rule_set: option.Option(CollectionRuleSetRecord),
    products_count: option.Option(Int),
    is_smart: Bool,
    cursor: option.Option(String),
    title_cursor: option.Option(String),
    updated_at_cursor: option.Option(String),
  )
}

Constructors

pub type CollectionRuleRecord {
  CollectionRuleRecord(
    column: String,
    relation: String,
    condition: String,
  )
}

Constructors

  • CollectionRuleRecord(
      column: String,
      relation: String,
      condition: String,
    )
pub type CollectionRuleSetRecord {
  CollectionRuleSetRecord(
    applied_disjunctively: Bool,
    rules: List(CollectionRuleRecord),
  )
}

Constructors

Mirrors CustomerAccountPageRecord.

pub type CustomerAccountPageRecord {
  CustomerAccountPageRecord(
    id: String,
    title: String,
    handle: String,
    default_cursor: String,
    cursor: option.Option(String),
  )
}

Constructors

  • CustomerAccountPageRecord(
      id: String,
      title: String,
      handle: String,
      default_cursor: String,
      cursor: option.Option(String),
    )

Mirrors CustomerAddressRecord.

pub type CustomerAddressRecord {
  CustomerAddressRecord(
    id: String,
    customer_id: String,
    cursor: option.Option(String),
    position: Int,
    first_name: option.Option(String),
    last_name: option.Option(String),
    address1: option.Option(String),
    address2: option.Option(String),
    city: option.Option(String),
    company: option.Option(String),
    province: option.Option(String),
    province_code: option.Option(String),
    country: option.Option(String),
    country_code_v2: option.Option(String),
    zip: option.Option(String),
    phone: option.Option(String),
    name: option.Option(String),
    formatted_area: option.Option(String),
  )
}

Constructors

pub type CustomerCatalogConnectionRecord {
  CustomerCatalogConnectionRecord(
    ordered_customer_ids: List(String),
    cursor_by_customer_id: dict.Dict(String, String),
    page_info: CustomerCatalogPageInfoRecord,
  )
}

Constructors

pub type CustomerCatalogPageInfoRecord {
  CustomerCatalogPageInfoRecord(
    has_next_page: Bool,
    has_previous_page: Bool,
    start_cursor: option.Option(String),
    end_cursor: option.Option(String),
  )
}

Constructors

  • CustomerCatalogPageInfoRecord(
      has_next_page: Bool,
      has_previous_page: Bool,
      start_cursor: option.Option(String),
      end_cursor: option.Option(String),
    )

Mirrors CustomerDataErasureRequestRecord.

pub type CustomerDataErasureRequestRecord {
  CustomerDataErasureRequestRecord(
    customer_id: String,
    requested_at: String,
    canceled_at: option.Option(String),
  )
}

Constructors

  • CustomerDataErasureRequestRecord(
      customer_id: String,
      requested_at: String,
      canceled_at: option.Option(String),
    )

Mirrors CustomerDefaultAddressRecord.

pub type CustomerDefaultAddressRecord {
  CustomerDefaultAddressRecord(
    id: option.Option(String),
    first_name: option.Option(String),
    last_name: option.Option(String),
    address1: option.Option(String),
    address2: option.Option(String),
    city: option.Option(String),
    company: option.Option(String),
    province: option.Option(String),
    province_code: option.Option(String),
    country: option.Option(String),
    country_code_v2: option.Option(String),
    zip: option.Option(String),
    phone: option.Option(String),
    name: option.Option(String),
    formatted_area: option.Option(String),
  )
}

Constructors

Mirrors CustomerDefaultEmailAddressRecord.

pub type CustomerDefaultEmailAddressRecord {
  CustomerDefaultEmailAddressRecord(
    email_address: option.Option(String),
    marketing_state: option.Option(String),
    marketing_opt_in_level: option.Option(String),
    marketing_updated_at: option.Option(String),
  )
}

Constructors

Mirrors CustomerDefaultPhoneNumberRecord.

pub type CustomerDefaultPhoneNumberRecord {
  CustomerDefaultPhoneNumberRecord(
    phone_number: option.Option(String),
    marketing_state: option.Option(String),
    marketing_opt_in_level: option.Option(String),
    marketing_updated_at: option.Option(String),
    marketing_collected_from: option.Option(String),
  )
}

Constructors

Mirrors CustomerEmailMarketingConsentRecord.

pub type CustomerEmailMarketingConsentRecord {
  CustomerEmailMarketingConsentRecord(
    marketing_state: option.Option(String),
    marketing_opt_in_level: option.Option(String),
    consent_updated_at: option.Option(String),
  )
}

Constructors

Minimal customer-owned event summary used by Customer.events.

pub type CustomerEventSummaryRecord {
  CustomerEventSummaryRecord(
    id: String,
    customer_id: String,
    cursor: option.Option(String),
  )
}

Constructors

  • CustomerEventSummaryRecord(
      id: String,
      customer_id: String,
      cursor: option.Option(String),
    )

Mirrors CustomerMergeRequestRecord.

pub type CustomerMergeErrorRecord {
  CustomerMergeErrorRecord(
    error_fields: List(String),
    message: String,
  )
}

Constructors

  • CustomerMergeErrorRecord(
      error_fields: List(String),
      message: String,
    )
pub type CustomerMergeRequestRecord {
  CustomerMergeRequestRecord(
    job_id: String,
    resulting_customer_id: String,
    status: String,
    customer_merge_errors: List(CustomerMergeErrorRecord),
  )
}

Constructors

  • CustomerMergeRequestRecord(
      job_id: String,
      resulting_customer_id: String,
      status: String,
      customer_merge_errors: List(CustomerMergeErrorRecord),
    )

Customer-owned metafield record.

pub type CustomerMetafieldRecord {
  CustomerMetafieldRecord(
    id: String,
    customer_id: String,
    namespace: String,
    key: String,
    type_: String,
    value: String,
    compare_digest: option.Option(String),
    created_at: option.Option(String),
    updated_at: option.Option(String),
  )
}

Constructors

  • CustomerMetafieldRecord(
      id: String,
      customer_id: String,
      namespace: String,
      key: String,
      type_: String,
      value: String,
      compare_digest: option.Option(String),
      created_at: option.Option(String),
      updated_at: option.Option(String),
    )

Minimal customer-owned order summary used by Customer.orders/lastOrder.

pub type CustomerOrderSummaryRecord {
  CustomerOrderSummaryRecord(
    id: String,
    customer_id: option.Option(String),
    cursor: option.Option(String),
    name: option.Option(String),
    email: option.Option(String),
    created_at: option.Option(String),
    current_total_price: option.Option(Money),
  )
}

Constructors

Mirrors CustomerPaymentMethodInstrumentRecord as a JSON-ish string map.

pub type CustomerPaymentMethodInstrumentRecord {
  CustomerPaymentMethodInstrumentRecord(
    type_name: String,
    data: dict.Dict(String, String),
  )
}

Constructors

  • CustomerPaymentMethodInstrumentRecord(
      type_name: String,
      data: dict.Dict(String, String),
    )

Mirrors CustomerPaymentMethodRecord.

pub type CustomerPaymentMethodRecord {
  CustomerPaymentMethodRecord(
    id: String,
    customer_id: String,
    cursor: option.Option(String),
    instrument: option.Option(
      CustomerPaymentMethodInstrumentRecord,
    ),
    revoked_at: option.Option(String),
    revoked_reason: option.Option(String),
    subscription_contracts: List(
      CustomerPaymentMethodSubscriptionContractRecord,
    ),
  )
}

Constructors

Mirrors CustomerPaymentMethodSubscriptionContractRecord.

pub type CustomerPaymentMethodSubscriptionContractRecord {
  CustomerPaymentMethodSubscriptionContractRecord(
    id: String,
    cursor: option.Option(String),
    data: dict.Dict(String, String),
  )
}

Constructors

  • CustomerPaymentMethodSubscriptionContractRecord(
      id: String,
      cursor: option.Option(String),
      data: dict.Dict(String, String),
    )

Mirrors CustomerPaymentMethodUpdateUrlRecord.

pub type CustomerPaymentMethodUpdateUrlRecord {
  CustomerPaymentMethodUpdateUrlRecord(
    id: String,
    customer_payment_method_id: String,
    update_payment_method_url: String,
    created_at: String,
  )
}

Constructors

  • CustomerPaymentMethodUpdateUrlRecord(
      id: String,
      customer_payment_method_id: String,
      update_payment_method_url: String,
      created_at: String,
    )

Mirrors CustomerRecord.

pub type CustomerRecord {
  CustomerRecord(
    id: String,
    first_name: option.Option(String),
    last_name: option.Option(String),
    display_name: option.Option(String),
    email: option.Option(String),
    legacy_resource_id: option.Option(String),
    locale: option.Option(String),
    note: option.Option(String),
    can_delete: option.Option(Bool),
    verified_email: option.Option(Bool),
    data_sale_opt_out: Bool,
    tax_exempt: option.Option(Bool),
    tax_exemptions: List(String),
    state: option.Option(String),
    tags: List(String),
    number_of_orders: option.Option(String),
    amount_spent: option.Option(Money),
    default_email_address: option.Option(
      CustomerDefaultEmailAddressRecord,
    ),
    default_phone_number: option.Option(
      CustomerDefaultPhoneNumberRecord,
    ),
    email_marketing_consent: option.Option(
      CustomerEmailMarketingConsentRecord,
    ),
    sms_marketing_consent: option.Option(
      CustomerSmsMarketingConsentRecord,
    ),
    default_address: option.Option(CustomerDefaultAddressRecord),
    created_at: option.Option(String),
    updated_at: option.Option(String),
  )
}

Constructors

Mirrors CustomerSegmentMembersQueryRecord. A staged record captures the resolved query string + originating segmentId, plus the realized member count and done flag. The proxy stages these in finished form (done=true) at create time; the create-mutation response shape returns currentCount=0/done=false to match Shopify’s asynchronous job semantics.

pub type CustomerSegmentMembersQueryRecord {
  CustomerSegmentMembersQueryRecord(
    id: String,
    query: option.Option(String),
    segment_id: option.Option(String),
    current_count: Int,
    done: Bool,
  )
}

Constructors

  • CustomerSegmentMembersQueryRecord(
      id: String,
      query: option.Option(String),
      segment_id: option.Option(String),
      current_count: Int,
      done: Bool,
    )

Mirrors CustomerSmsMarketingConsentRecord.

pub type CustomerSmsMarketingConsentRecord {
  CustomerSmsMarketingConsentRecord(
    marketing_state: option.Option(String),
    marketing_opt_in_level: option.Option(String),
    consent_updated_at: option.Option(String),
    consent_collected_from: option.Option(String),
  )
}

Constructors

Mirrors DelegatedAccessTokenRecord. The proxy stores a sha256 of the access token plus a redacted preview rather than the raw token — the raw token is only returned in the create mutation response.

pub type DelegatedAccessTokenRecord {
  DelegatedAccessTokenRecord(
    id: String,
    access_token_sha256: String,
    access_token_preview: String,
    access_scopes: List(String),
    created_at: String,
    expires_in: option.Option(Int),
    destroyed_at: option.Option(String),
  )
}

Constructors

  • DelegatedAccessTokenRecord(
      id: String,
      access_token_sha256: String,
      access_token_preview: String,
      access_scopes: List(String),
      created_at: String,
      expires_in: option.Option(Int),
      destroyed_at: option.Option(String),
    )
pub type DeliveryProfileRecord {
  DeliveryProfileRecord(
    id: String,
    cursor: option.Option(String),
    merchant_owned: Bool,
    data: CapturedJsonValue,
  )
}

Constructors

pub type DiscountBulkOperationRecord {
  DiscountBulkOperationRecord(
    id: String,
    operation: String,
    discount_id: String,
    status: String,
    payload: CapturedJsonValue,
  )
}

Constructors

  • DiscountBulkOperationRecord(
      id: String,
      operation: String,
      discount_id: String,
      status: String,
      payload: CapturedJsonValue,
    )
pub type DiscountRecord {
  DiscountRecord(
    id: String,
    owner_kind: String,
    discount_type: String,
    title: option.Option(String),
    status: String,
    code: option.Option(String),
    payload: CapturedJsonValue,
    cursor: option.Option(String),
  )
}

Constructors

pub type DraftOrderRecord {
  DraftOrderRecord(
    id: String,
    cursor: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

pub type DraftOrderVariantCatalogRecord {
  DraftOrderVariantCatalogRecord(
    variant_id: String,
    title: String,
    name: String,
    variant_title: option.Option(String),
    sku: option.Option(String),
    requires_shipping: Bool,
    taxable: Bool,
    unit_price: String,
    currency_code: String,
  )
}

Constructors

  • DraftOrderVariantCatalogRecord(
      variant_id: String,
      title: String,
      name: String,
      variant_title: option.Option(String),
      sku: option.Option(String),
      requires_shipping: Bool,
      taxable: Bool,
      unit_price: String,
      currency_code: String,
    )
pub type FileRecord {
  FileRecord(
    id: String,
    alt: option.Option(String),
    content_type: option.Option(String),
    created_at: String,
    file_status: String,
    filename: option.Option(String),
    original_source: String,
    image_url: option.Option(String),
    image_width: option.Option(Int),
    image_height: option.Option(Int),
    update_failure_acknowledged_at: option.Option(String),
  )
}

Constructors

pub type FulfillmentOrderRecord {
  FulfillmentOrderRecord(
    id: String,
    order_id: option.Option(String),
    status: String,
    request_status: String,
    assigned_location_id: option.Option(String),
    assignment_status: option.Option(String),
    manually_held: Bool,
    data: CapturedJsonValue,
  )
}

Constructors

pub type FulfillmentRecord {
  FulfillmentRecord(
    id: String,
    order_id: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

pub type FulfillmentServiceRecord {
  FulfillmentServiceRecord(
    id: String,
    handle: String,
    service_name: String,
    callback_url: option.Option(String),
    inventory_management: Bool,
    location_id: option.Option(String),
    requires_shipping_method: Bool,
    tracking_support: Bool,
    type_: String,
  )
}

Constructors

  • FulfillmentServiceRecord(
      id: String,
      handle: String,
      service_name: String,
      callback_url: option.Option(String),
      inventory_management: Bool,
      location_id: option.Option(String),
      requires_shipping_method: Bool,
      tracking_support: Bool,
      type_: String,
    )

Mirrors GiftCardConfigurationRecord. Stored as a singleton on the store like TaxAppConfigurationRecord — one configuration per shop.

pub type GiftCardConfigurationRecord {
  GiftCardConfigurationRecord(
    issue_limit: Money,
    purchase_limit: Money,
  )
}

Constructors

  • GiftCardConfigurationRecord(
      issue_limit: Money,
      purchase_limit: Money,
    )

Mirrors GiftCardRecipientAttributesRecord. Every field is nullable in TS to match the Admin GraphQL schema; the proxy’s create/update helpers preserve null-vs-omit semantics by reading/writing Option(String) here directly.

pub type GiftCardRecipientAttributesRecord {
  GiftCardRecipientAttributesRecord(
    id: option.Option(String),
    message: option.Option(String),
    preferred_name: option.Option(String),
    send_notification_at: option.Option(String),
  )
}

Constructors

Mirrors GiftCardRecord. recipient_attributes is None for cards minted without recipient input; the serializer falls back to a constructed attributes record built from recipient_id if present.

pub type GiftCardRecord {
  GiftCardRecord(
    id: String,
    legacy_resource_id: String,
    last_characters: String,
    masked_code: String,
    enabled: Bool,
    deactivated_at: option.Option(String),
    expires_on: option.Option(String),
    note: option.Option(String),
    template_suffix: option.Option(String),
    created_at: String,
    updated_at: String,
    initial_value: Money,
    balance: Money,
    customer_id: option.Option(String),
    recipient_id: option.Option(String),
    source: option.Option(String),
    recipient_attributes: option.Option(
      GiftCardRecipientAttributesRecord,
    ),
    transactions: List(GiftCardTransactionRecord),
  )
}

Constructors

Mirrors GiftCardTransactionRecord. kind is "CREDIT" or "DEBIT" — kept as a String to match the TS literal-union shape; the gift-card handler never inspects it as a sum.

pub type GiftCardTransactionRecord {
  GiftCardTransactionRecord(
    id: String,
    kind: String,
    amount: Money,
    processed_at: String,
    note: option.Option(String),
  )
}

Constructors

  • GiftCardTransactionRecord(
      id: String,
      kind: String,
      amount: Money,
      processed_at: String,
      note: option.Option(String),
    )
pub type InventoryItemRecord {
  InventoryItemRecord(
    id: String,
    tracked: option.Option(Bool),
    requires_shipping: option.Option(Bool),
    measurement: option.Option(InventoryMeasurementRecord),
    country_code_of_origin: option.Option(String),
    province_code_of_origin: option.Option(String),
    harmonized_system_code: option.Option(String),
    inventory_levels: List(InventoryLevelRecord),
  )
}

Constructors

pub type InventoryLevelRecord {
  InventoryLevelRecord(
    id: String,
    location: InventoryLocationRecord,
    quantities: List(InventoryQuantityRecord),
    is_active: option.Option(Bool),
    cursor: option.Option(String),
  )
}

Constructors

pub type InventoryLocationRecord {
  InventoryLocationRecord(id: String, name: String)
}

Constructors

  • InventoryLocationRecord(id: String, name: String)
pub type InventoryMeasurementRecord {
  InventoryMeasurementRecord(
    weight: option.Option(InventoryWeightRecord),
  )
}

Constructors

pub type InventoryQuantityRecord {
  InventoryQuantityRecord(
    name: String,
    quantity: Int,
    updated_at: option.Option(String),
  )
}

Constructors

  • InventoryQuantityRecord(
      name: String,
      quantity: Int,
      updated_at: option.Option(String),
    )
pub type InventoryShipmentLineItemRecord {
  InventoryShipmentLineItemRecord(
    id: String,
    inventory_item_id: String,
    quantity: Int,
    accepted_quantity: Int,
    rejected_quantity: Int,
  )
}

Constructors

  • InventoryShipmentLineItemRecord(
      id: String,
      inventory_item_id: String,
      quantity: Int,
      accepted_quantity: Int,
      rejected_quantity: Int,
    )
pub type InventoryShipmentRecord {
  InventoryShipmentRecord(
    id: String,
    movement_id: String,
    name: String,
    status: String,
    created_at: String,
    updated_at: String,
    tracking: option.Option(InventoryShipmentTrackingRecord),
    line_items: List(InventoryShipmentLineItemRecord),
  )
}

Constructors

pub type InventoryShipmentTrackingRecord {
  InventoryShipmentTrackingRecord(
    tracking_number: option.Option(String),
    company: option.Option(String),
    tracking_url: option.Option(String),
    arrives_at: option.Option(String),
  )
}

Constructors

pub type InventoryTransferLineItemRecord {
  InventoryTransferLineItemRecord(
    id: String,
    inventory_item_id: String,
    title: option.Option(String),
    total_quantity: Int,
    shipped_quantity: Int,
    picked_for_shipment_quantity: Int,
  )
}

Constructors

  • InventoryTransferLineItemRecord(
      id: String,
      inventory_item_id: String,
      title: option.Option(String),
      total_quantity: Int,
      shipped_quantity: Int,
      picked_for_shipment_quantity: Int,
    )
pub type InventoryTransferLocationSnapshotRecord {
  InventoryTransferLocationSnapshotRecord(
    id: option.Option(String),
    name: String,
    snapshotted_at: String,
  )
}

Constructors

  • InventoryTransferLocationSnapshotRecord(
      id: option.Option(String),
      name: String,
      snapshotted_at: String,
    )
pub type InventoryTransferRecord {
  InventoryTransferRecord(
    id: String,
    name: String,
    reference_name: option.Option(String),
    status: String,
    note: option.Option(String),
    tags: List(String),
    date_created: String,
    origin: option.Option(InventoryTransferLocationSnapshotRecord),
    destination: option.Option(
      InventoryTransferLocationSnapshotRecord,
    ),
    line_items: List(InventoryTransferLineItemRecord),
  )
}

Constructors

pub type InventoryWeightRecord {
  InventoryWeightRecord(
    unit: String,
    value: InventoryWeightValue,
  )
}

Constructors

pub type InventoryWeightValue {
  InventoryWeightInt(Int)
  InventoryWeightFloat(Float)
}

Constructors

  • InventoryWeightInt(Int)
  • InventoryWeightFloat(Float)

Mirrors LocaleRecord. The catalog of every locale Shopify recognises (independent of which ones the shop has enabled).

pub type LocaleRecord {
  LocaleRecord(iso_code: String, name: String)
}

Constructors

  • LocaleRecord(iso_code: String, name: String)
pub type LocationRecord {
  LocationRecord(
    id: String,
    name: String,
    cursor: option.Option(String),
  )
}

Constructors

  • LocationRecord(
      id: String,
      name: String,
      cursor: option.Option(String),
    )

Mirrors MarketLocalizationRecord in src/state/types.ts.

pub type MarketLocalizationRecord {
  MarketLocalizationRecord(
    resource_id: String,
    market_id: String,
    key: String,
    value: String,
    updated_at: String,
    outdated: Bool,
  )
}

Constructors

  • MarketLocalizationRecord(
      resource_id: String,
      market_id: String,
      key: String,
      value: String,
      updated_at: String,
      outdated: Bool,
    )

Mirrors MarketRecord in src/state/types.ts. The captured Shopify payload remains JSON-shaped because Markets expose several nested union and connection subtrees that are projected by the domain serializer.

pub type MarketRecord {
  MarketRecord(
    id: String,
    cursor: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

Mirrors MarketingEngagementRecord.

pub type MarketingEngagementRecord {
  MarketingEngagementRecord(
    id: String,
    marketing_activity_id: option.Option(String),
    remote_id: option.Option(String),
    channel_handle: option.Option(String),
    occurred_on: String,
    data: dict.Dict(String, MarketingValue),
  )
}

Constructors

Mirrors MarketingRecord.

pub type MarketingRecord {
  MarketingRecord(
    id: String,
    cursor: option.Option(String),
    data: dict.Dict(String, MarketingValue),
  )
}

Constructors

JSON-shaped value carried by upstream-hydrated or locally staged marketing activity/event/engagement records. The TypeScript store keeps these as Record<string, jsonValue>; this ADT gives the Gleam port the same shape without coupling state types back to the GraphQL projector module.

pub type MarketingValue {
  MarketingNull
  MarketingString(String)
  MarketingBool(Bool)
  MarketingInt(Int)
  MarketingFloat(Float)
  MarketingList(List(MarketingValue))
  MarketingObject(dict.Dict(String, MarketingValue))
}

Constructors

  • MarketingNull
  • MarketingString(String)
  • MarketingBool(Bool)
  • MarketingInt(Int)
  • MarketingFloat(Float)
  • MarketingList(List(MarketingValue))
  • MarketingObject(dict.Dict(String, MarketingValue))
pub type MetafieldDefinitionCapabilitiesRecord {
  MetafieldDefinitionCapabilitiesRecord(
    admin_filterable: MetafieldDefinitionCapabilityRecord,
    smart_collection_condition: MetafieldDefinitionCapabilityRecord,
    unique_values: MetafieldDefinitionCapabilityRecord,
  )
}

Constructors

pub type MetafieldDefinitionCapabilityRecord {
  MetafieldDefinitionCapabilityRecord(
    enabled: Bool,
    eligible: Bool,
    status: option.Option(String),
  )
}

Constructors

  • MetafieldDefinitionCapabilityRecord(
      enabled: Bool,
      eligible: Bool,
      status: option.Option(String),
    )
pub type MetafieldDefinitionConstraintValueRecord {
  MetafieldDefinitionConstraintValueRecord(value: String)
}

Constructors

  • MetafieldDefinitionConstraintValueRecord(value: String)
pub type MetafieldDefinitionConstraintsRecord {
  MetafieldDefinitionConstraintsRecord(
    key: option.Option(String),
    values: List(MetafieldDefinitionConstraintValueRecord),
  )
}

Constructors

pub type MetafieldDefinitionRecord {
  MetafieldDefinitionRecord(
    id: String,
    name: String,
    namespace: String,
    key: String,
    owner_type: String,
    type_: MetafieldDefinitionTypeRecord,
    description: option.Option(String),
    validations: List(MetafieldDefinitionValidationRecord),
    access: dict.Dict(String, json.Json),
    capabilities: MetafieldDefinitionCapabilitiesRecord,
    constraints: option.Option(
      MetafieldDefinitionConstraintsRecord,
    ),
    pinned_position: option.Option(Int),
    validation_status: String,
  )
}

Constructors

pub type MetafieldDefinitionTypeRecord {
  MetafieldDefinitionTypeRecord(
    name: String,
    category: option.Option(String),
  )
}

Constructors

  • MetafieldDefinitionTypeRecord(
      name: String,
      category: option.Option(String),
    )
pub type MetafieldDefinitionValidationRecord {
  MetafieldDefinitionValidationRecord(
    name: String,
    value: option.Option(String),
  )
}

Constructors

  • MetafieldDefinitionValidationRecord(
      name: String,
      value: option.Option(String),
    )
pub type MetaobjectCapabilitiesRecord {
  MetaobjectCapabilitiesRecord(
    publishable: option.Option(
      MetaobjectPublishableCapabilityRecord,
    ),
    online_store: option.Option(
      MetaobjectOnlineStoreCapabilityRecord,
    ),
  )
}

Constructors

pub type MetaobjectDefinitionCapabilitiesRecord {
  MetaobjectDefinitionCapabilitiesRecord(
    publishable: option.Option(
      MetaobjectDefinitionCapabilityRecord,
    ),
    translatable: option.Option(
      MetaobjectDefinitionCapabilityRecord,
    ),
    renderable: option.Option(
      MetaobjectDefinitionCapabilityRecord,
    ),
    online_store: option.Option(
      MetaobjectDefinitionCapabilityRecord,
    ),
  )
}

Constructors

pub type MetaobjectDefinitionCapabilityRecord {
  MetaobjectDefinitionCapabilityRecord(enabled: Bool)
}

Constructors

  • MetaobjectDefinitionCapabilityRecord(enabled: Bool)
pub type MetaobjectDefinitionRecord {
  MetaobjectDefinitionRecord(
    id: String,
    type_: String,
    name: option.Option(String),
    description: option.Option(String),
    display_name_key: option.Option(String),
    access: dict.Dict(String, option.Option(String)),
    capabilities: MetaobjectDefinitionCapabilitiesRecord,
    field_definitions: List(MetaobjectFieldDefinitionRecord),
    has_thumbnail_field: option.Option(Bool),
    metaobjects_count: option.Option(Int),
    standard_template: option.Option(
      MetaobjectStandardTemplateRecord,
    ),
    created_at: option.Option(String),
    updated_at: option.Option(String),
  )
}

Constructors

pub type MetaobjectDefinitionTypeRecord {
  MetaobjectDefinitionTypeRecord(
    name: String,
    category: option.Option(String),
  )
}

Constructors

  • MetaobjectDefinitionTypeRecord(
      name: String,
      category: option.Option(String),
    )
pub type MetaobjectFieldDefinitionRecord {
  MetaobjectFieldDefinitionRecord(
    key: String,
    name: option.Option(String),
    description: option.Option(String),
    required: option.Option(Bool),
    type_: MetaobjectDefinitionTypeRecord,
    validations: List(MetaobjectFieldDefinitionValidationRecord),
  )
}

Constructors

pub type MetaobjectFieldDefinitionReferenceRecord {
  MetaobjectFieldDefinitionReferenceRecord(
    key: String,
    name: option.Option(String),
    required: option.Option(Bool),
    type_: MetaobjectDefinitionTypeRecord,
  )
}

Constructors

pub type MetaobjectFieldDefinitionValidationRecord {
  MetaobjectFieldDefinitionValidationRecord(
    name: String,
    value: option.Option(String),
  )
}

Constructors

  • MetaobjectFieldDefinitionValidationRecord(
      name: String,
      value: option.Option(String),
    )
pub type MetaobjectFieldRecord {
  MetaobjectFieldRecord(
    key: String,
    type_: option.Option(String),
    value: option.Option(String),
    json_value: MetaobjectJsonValue,
    definition: option.Option(
      MetaobjectFieldDefinitionReferenceRecord,
    ),
  )
}

Constructors

pub type MetaobjectJsonValue {
  MetaobjectNull
  MetaobjectString(String)
  MetaobjectBool(Bool)
  MetaobjectInt(Int)
  MetaobjectFloat(Float)
  MetaobjectList(List(MetaobjectJsonValue))
  MetaobjectObject(dict.Dict(String, MetaobjectJsonValue))
}

Constructors

pub type MetaobjectOnlineStoreCapabilityRecord {
  MetaobjectOnlineStoreCapabilityRecord(
    template_suffix: option.Option(String),
  )
}

Constructors

  • MetaobjectOnlineStoreCapabilityRecord(
      template_suffix: option.Option(String),
    )
pub type MetaobjectPublishableCapabilityRecord {
  MetaobjectPublishableCapabilityRecord(
    status: option.Option(String),
  )
}

Constructors

  • MetaobjectPublishableCapabilityRecord(
      status: option.Option(String),
    )
pub type MetaobjectRecord {
  MetaobjectRecord(
    id: String,
    handle: String,
    type_: String,
    display_name: option.Option(String),
    fields: List(MetaobjectFieldRecord),
    capabilities: MetaobjectCapabilitiesRecord,
    created_at: option.Option(String),
    updated_at: option.Option(String),
  )
}

Constructors

pub type MetaobjectStandardTemplateRecord {
  MetaobjectStandardTemplateRecord(
    type_: option.Option(String),
    name: option.Option(String),
  )
}

Constructors

Shopify MoneyV2 shape ({ amount: String, currencyCode: String }). Many domains use this — defined here so the apps pass doesn’t have to invent its own. Future domain ports should reuse this rather than rolling a private one.

pub type Money {
  Money(amount: String, currency_code: String)
}

Constructors

  • Money(amount: String, currency_code: String)
pub type OnlineStoreContentRecord {
  OnlineStoreContentRecord(
    id: String,
    kind: String,
    cursor: option.Option(String),
    parent_id: option.Option(String),
    created_at: option.Option(String),
    updated_at: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

pub type OnlineStoreIntegrationRecord {
  OnlineStoreIntegrationRecord(
    id: String,
    kind: String,
    cursor: option.Option(String),
    created_at: option.Option(String),
    updated_at: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

Idempotency record for orderCreateMandatePayment.

pub type OrderMandatePaymentRecord {
  OrderMandatePaymentRecord(
    order_id: String,
    idempotency_key: String,
    job_id: String,
    payment_reference_id: String,
    transaction_id: String,
  )
}

Constructors

  • OrderMandatePaymentRecord(
      order_id: String,
      idempotency_key: String,
      job_id: String,
      payment_reference_id: String,
      transaction_id: String,
    )
pub type OrderRecord {
  OrderRecord(
    id: String,
    cursor: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

Payment-customization owned metafield row.

pub type PaymentCustomizationMetafieldRecord {
  PaymentCustomizationMetafieldRecord(
    id: String,
    payment_customization_id: String,
    namespace: String,
    key: String,
    type_: option.Option(String),
    value: option.Option(String),
    compare_digest: option.Option(String),
    created_at: option.Option(String),
    updated_at: option.Option(String),
    owner_type: option.Option(String),
  )
}

Constructors

Mirrors PaymentCustomizationRecord.

pub type PaymentCustomizationRecord {
  PaymentCustomizationRecord(
    id: String,
    title: option.Option(String),
    enabled: option.Option(Bool),
    function_id: option.Option(String),
    function_handle: option.Option(String),
    metafields: List(PaymentCustomizationMetafieldRecord),
  )
}

Constructors

Mirrors PaymentReminderSendRecord.

pub type PaymentReminderSendRecord {
  PaymentReminderSendRecord(
    id: String,
    payment_schedule_id: String,
    sent_at: String,
  )
}

Constructors

  • PaymentReminderSendRecord(
      id: String,
      payment_schedule_id: String,
      sent_at: String,
    )

Mirrors the payment-schedule projection used by payment terms.

pub type PaymentScheduleRecord {
  PaymentScheduleRecord(
    id: String,
    due_at: option.Option(String),
    issued_at: option.Option(String),
    completed_at: option.Option(String),
    due: option.Option(Bool),
    amount: option.Option(Money),
    balance_due: option.Option(Money),
    total_balance: option.Option(Money),
  )
}

Constructors

pub type PaymentSettingsRecord {
  PaymentSettingsRecord(supported_digital_wallets: List(String))
}

Constructors

  • PaymentSettingsRecord(supported_digital_wallets: List(String))

Normalized payment terms staged against an order or draft order owner.

pub type PaymentTermsRecord {
  PaymentTermsRecord(
    id: String,
    owner_id: String,
    due: Bool,
    overdue: Bool,
    due_in_days: option.Option(Int),
    payment_terms_name: String,
    payment_terms_type: String,
    translated_name: String,
    payment_schedules: List(PaymentScheduleRecord),
  )
}

Constructors

  • PaymentTermsRecord(
      id: String,
      owner_id: String,
      due: Bool,
      overdue: Bool,
      due_in_days: option.Option(Int),
      payment_terms_name: String,
      payment_terms_type: String,
      translated_name: String,
      payment_schedules: List(PaymentScheduleRecord),
    )

Mirrors PaymentTermsTemplateRecord.

pub type PaymentTermsTemplateRecord {
  PaymentTermsTemplateRecord(
    id: String,
    name: String,
    description: String,
    due_in_days: option.Option(Int),
    payment_terms_type: String,
    translated_name: String,
  )
}

Constructors

  • PaymentTermsTemplateRecord(
      id: String,
      name: String,
      description: String,
      due_in_days: option.Option(Int),
      payment_terms_type: String,
      translated_name: String,
    )

Mirrors PriceListRecord in src/state/types.ts.

pub type PriceListRecord {
  PriceListRecord(
    id: String,
    cursor: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

pub type ProductCategoryRecord {
  ProductCategoryRecord(id: String, full_name: String)
}

Constructors

  • ProductCategoryRecord(id: String, full_name: String)
pub type ProductCollectionRecord {
  ProductCollectionRecord(
    collection_id: String,
    product_id: String,
    position: Int,
    cursor: option.Option(String),
  )
}

Constructors

  • ProductCollectionRecord(
      collection_id: String,
      product_id: String,
      position: Int,
      cursor: option.Option(String),
    )
pub type ProductFeedRecord {
  ProductFeedRecord(
    id: String,
    country: option.Option(String),
    language: option.Option(String),
    status: String,
  )
}

Constructors

pub type ProductMediaRecord {
  ProductMediaRecord(
    key: String,
    product_id: String,
    position: Int,
    id: option.Option(String),
    media_content_type: option.Option(String),
    alt: option.Option(String),
    status: option.Option(String),
    product_image_id: option.Option(String),
    image_url: option.Option(String),
    image_width: option.Option(Int),
    image_height: option.Option(Int),
    preview_image_url: option.Option(String),
    source_url: option.Option(String),
  )
}

Constructors

pub type ProductMetafieldRecord {
  ProductMetafieldRecord(
    id: String,
    owner_id: String,
    namespace: String,
    key: String,
    type_: option.Option(String),
    value: option.Option(String),
    compare_digest: option.Option(String),
    json_value: option.Option(json.Json),
    created_at: option.Option(String),
    updated_at: option.Option(String),
    owner_type: option.Option(String),
  )
}

Constructors

pub type ProductOperationRecord {
  ProductOperationRecord(
    id: String,
    type_name: String,
    product_id: option.Option(String),
    new_product_id: option.Option(String),
    status: String,
    user_errors: List(ProductOperationUserErrorRecord),
  )
}

Constructors

pub type ProductOperationUserErrorRecord {
  ProductOperationUserErrorRecord(
    field: option.Option(List(String)),
    message: String,
  )
}

Constructors

  • ProductOperationUserErrorRecord(
      field: option.Option(List(String)),
      message: String,
    )
pub type ProductOptionRecord {
  ProductOptionRecord(
    id: String,
    product_id: String,
    name: String,
    position: Int,
    option_values: List(ProductOptionValueRecord),
  )
}

Constructors

  • ProductOptionRecord(
      id: String,
      product_id: String,
      name: String,
      position: Int,
      option_values: List(ProductOptionValueRecord),
    )
pub type ProductOptionValueRecord {
  ProductOptionValueRecord(
    id: String,
    name: String,
    has_variants: Bool,
  )
}

Constructors

  • ProductOptionValueRecord(
      id: String,
      name: String,
      has_variants: Bool,
    )
pub type ProductRecord {
  ProductRecord(
    id: String,
    legacy_resource_id: option.Option(String),
    title: String,
    handle: String,
    status: String,
    vendor: option.Option(String),
    product_type: option.Option(String),
    tags: List(String),
    total_inventory: option.Option(Int),
    tracks_inventory: option.Option(Bool),
    created_at: option.Option(String),
    updated_at: option.Option(String),
    published_at: option.Option(String),
    description_html: String,
    online_store_preview_url: option.Option(String),
    template_suffix: option.Option(String),
    seo: ProductSeoRecord,
    category: option.Option(ProductCategoryRecord),
    publication_ids: List(String),
    contextual_pricing: option.Option(CapturedJsonValue),
    cursor: option.Option(String),
  )
}

Constructors

pub type ProductResourceFeedbackRecord {
  ProductResourceFeedbackRecord(
    product_id: String,
    state: String,
    feedback_generated_at: String,
    product_updated_at: String,
    messages: List(String),
  )
}

Constructors

  • ProductResourceFeedbackRecord(
      product_id: String,
      state: String,
      feedback_generated_at: String,
      product_updated_at: String,
      messages: List(String),
    )
pub type ProductSeoRecord {
  ProductSeoRecord(
    title: option.Option(String),
    description: option.Option(String),
  )
}

Constructors

pub type ProductVariantRecord {
  ProductVariantRecord(
    id: String,
    product_id: String,
    title: String,
    sku: option.Option(String),
    barcode: option.Option(String),
    price: option.Option(String),
    compare_at_price: option.Option(String),
    taxable: option.Option(Bool),
    inventory_policy: option.Option(String),
    inventory_quantity: option.Option(Int),
    selected_options: List(ProductVariantSelectedOptionRecord),
    media_ids: List(String),
    inventory_item: option.Option(InventoryItemRecord),
    contextual_pricing: option.Option(CapturedJsonValue),
    cursor: option.Option(String),
  )
}

Constructors

pub type ProductVariantSelectedOptionRecord {
  ProductVariantSelectedOptionRecord(name: String, value: String)
}

Constructors

  • ProductVariantSelectedOptionRecord(name: String, value: String)
pub type PublicationRecord {
  PublicationRecord(
    id: String,
    name: option.Option(String),
    auto_publish: option.Option(Bool),
    supports_future_publishing: option.Option(Bool),
    catalog_id: option.Option(String),
    channel_id: option.Option(String),
    cursor: option.Option(String),
  )
}

Constructors

pub type ReverseDeliveryRecord {
  ReverseDeliveryRecord(
    id: String,
    reverse_fulfillment_order_id: String,
    data: CapturedJsonValue,
  )
}

Constructors

  • ReverseDeliveryRecord(
      id: String,
      reverse_fulfillment_order_id: String,
      data: CapturedJsonValue,
    )
pub type ReverseFulfillmentOrderRecord {
  ReverseFulfillmentOrderRecord(
    id: String,
    data: CapturedJsonValue,
  )
}

Constructors

One key/value filter on a saved search. Mirrors SavedSearchRecord['filters'][number].

pub type SavedSearchFilter {
  SavedSearchFilter(key: String, value: String)
}

Constructors

  • SavedSearchFilter(key: String, value: String)

A single saved-search record. Mirrors SavedSearchRecord in src/state/types.ts. cursor is set on records the proxy stages from upstream-hybrid responses; static defaults and freshly-created records carry None.

pub type SavedSearchRecord {
  SavedSearchRecord(
    id: String,
    legacy_resource_id: String,
    name: String,
    query: String,
    resource_type: String,
    search_terms: String,
    filters: List(SavedSearchFilter),
    cursor: option.Option(String),
  )
}

Constructors

  • SavedSearchRecord(
      id: String,
      legacy_resource_id: String,
      name: String,
      query: String,
      resource_type: String,
      search_terms: String,
      filters: List(SavedSearchFilter),
      cursor: option.Option(String),
    )

Mirrors SegmentRecord. Customer segments are upstream resources the proxy mirrors locally so create/update/delete mutations can be staged without contacting Admin. Every field except id is nullable to match the Admin GraphQL schema.

pub type SegmentRecord {
  SegmentRecord(
    id: String,
    name: option.Option(String),
    query: option.Option(String),
    creation_date: option.Option(String),
    last_edit_date: option.Option(String),
  )
}

Constructors

pub type SellingPlanGroupRecord {
  SellingPlanGroupRecord(
    id: String,
    app_id: option.Option(String),
    name: String,
    merchant_code: String,
    description: option.Option(String),
    options: List(String),
    position: option.Option(Int),
    summary: option.Option(String),
    created_at: option.Option(String),
    product_ids: List(String),
    product_variant_ids: List(String),
    selling_plans: List(SellingPlanRecord),
    cursor: option.Option(String),
  )
}

Constructors

pub type SellingPlanRecord {
  SellingPlanRecord(id: String, data: CapturedJsonValue)
}

Constructors

pub type ShippingOrderRecord {
  ShippingOrderRecord(id: String, data: CapturedJsonValue)
}

Constructors

pub type ShippingPackageDimensionsRecord {
  ShippingPackageDimensionsRecord(
    length: option.Option(Float),
    width: option.Option(Float),
    height: option.Option(Float),
    unit: option.Option(String),
  )
}

Constructors

pub type ShippingPackageRecord {
  ShippingPackageRecord(
    id: String,
    name: option.Option(String),
    type_: option.Option(String),
    default: Bool,
    weight: option.Option(ShippingPackageWeightRecord),
    dimensions: option.Option(ShippingPackageDimensionsRecord),
    created_at: String,
    updated_at: String,
  )
}

Constructors

pub type ShippingPackageWeightRecord {
  ShippingPackageWeightRecord(
    value: option.Option(Float),
    unit: option.Option(String),
  )
}

Constructors

pub type ShopAddressRecord {
  ShopAddressRecord(
    id: String,
    address1: option.Option(String),
    address2: option.Option(String),
    city: option.Option(String),
    company: option.Option(String),
    coordinates_validated: Bool,
    country: option.Option(String),
    country_code_v2: option.Option(String),
    formatted: List(String),
    formatted_area: option.Option(String),
    latitude: option.Option(Float),
    longitude: option.Option(Float),
    phone: option.Option(String),
    province: option.Option(String),
    province_code: option.Option(String),
    zip: option.Option(String),
  )
}

Constructors

pub type ShopBundlesFeatureRecord {
  ShopBundlesFeatureRecord(
    eligible_for_bundles: Bool,
    ineligibility_reason: option.Option(String),
    sells_bundles: Bool,
  )
}

Constructors

  • ShopBundlesFeatureRecord(
      eligible_for_bundles: Bool,
      ineligibility_reason: option.Option(String),
      sells_bundles: Bool,
    )
pub type ShopCartTransformEligibleOperationsRecord {
  ShopCartTransformEligibleOperationsRecord(
    expand_operation: Bool,
    merge_operation: Bool,
    update_operation: Bool,
  )
}

Constructors

  • ShopCartTransformEligibleOperationsRecord(
      expand_operation: Bool,
      merge_operation: Bool,
      update_operation: Bool,
    )
pub type ShopCartTransformFeatureRecord {
  ShopCartTransformFeatureRecord(
    eligible_operations: ShopCartTransformEligibleOperationsRecord,
  )
}

Constructors

pub type ShopDomainRecord {
  ShopDomainRecord(
    id: String,
    host: String,
    url: String,
    ssl_enabled: Bool,
  )
}

Constructors

  • ShopDomainRecord(
      id: String,
      host: String,
      url: String,
      ssl_enabled: Bool,
    )
pub type ShopFeaturesRecord {
  ShopFeaturesRecord(
    avalara_avatax: Bool,
    branding: String,
    bundles: ShopBundlesFeatureRecord,
    captcha: Bool,
    cart_transform: ShopCartTransformFeatureRecord,
    dynamic_remarketing: Bool,
    eligible_for_subscription_migration: Bool,
    eligible_for_subscriptions: Bool,
    gift_cards: Bool,
    harmonized_system_code: Bool,
    legacy_subscription_gateway_enabled: Bool,
    live_view: Bool,
    paypal_express_subscription_gateway_status: String,
    reports: Bool,
    sells_subscriptions: Bool,
    show_metrics: Bool,
    storefront: Bool,
    unified_markets: Bool,
  )
}

Constructors

  • ShopFeaturesRecord(
      avalara_avatax: Bool,
      branding: String,
      bundles: ShopBundlesFeatureRecord,
      captcha: Bool,
      cart_transform: ShopCartTransformFeatureRecord,
      dynamic_remarketing: Bool,
      eligible_for_subscription_migration: Bool,
      eligible_for_subscriptions: Bool,
      gift_cards: Bool,
      harmonized_system_code: Bool,
      legacy_subscription_gateway_enabled: Bool,
      live_view: Bool,
      paypal_express_subscription_gateway_status: String,
      reports: Bool,
      sells_subscriptions: Bool,
      show_metrics: Bool,
      storefront: Bool,
      unified_markets: Bool,
    )

Mirrors ShopLocaleRecord. The set of locales this shop has enabled, each with its primary/published flags and any market web-presence pinning. market_web_presence_ids defaults to [] for shops without markets configured.

pub type ShopLocaleRecord {
  ShopLocaleRecord(
    locale: String,
    name: String,
    primary: Bool,
    published: Bool,
    market_web_presence_ids: List(String),
  )
}

Constructors

  • ShopLocaleRecord(
      locale: String,
      name: String,
      primary: Bool,
      published: Bool,
      market_web_presence_ids: List(String),
    )
pub type ShopPlanRecord {
  ShopPlanRecord(
    partner_development: Bool,
    public_display_name: String,
    shopify_plus: Bool,
  )
}

Constructors

  • ShopPlanRecord(
      partner_development: Bool,
      public_display_name: String,
      shopify_plus: Bool,
    )
pub type ShopPolicyRecord {
  ShopPolicyRecord(
    id: String,
    title: String,
    body: String,
    type_: String,
    url: String,
    created_at: String,
    updated_at: String,
  )
}

Constructors

  • ShopPolicyRecord(
      id: String,
      title: String,
      body: String,
      type_: String,
      url: String,
      created_at: String,
      updated_at: String,
    )
pub type ShopRecord {
  ShopRecord(
    id: String,
    name: String,
    myshopify_domain: String,
    url: String,
    primary_domain: ShopDomainRecord,
    contact_email: String,
    email: String,
    currency_code: String,
    enabled_presentment_currencies: List(String),
    iana_timezone: String,
    timezone_abbreviation: String,
    timezone_offset: String,
    timezone_offset_minutes: Int,
    taxes_included: Bool,
    tax_shipping: Bool,
    unit_system: String,
    weight_unit: String,
    shop_address: ShopAddressRecord,
    plan: ShopPlanRecord,
    resource_limits: ShopResourceLimitsRecord,
    features: ShopFeaturesRecord,
    payment_settings: PaymentSettingsRecord,
    shop_policies: List(ShopPolicyRecord),
  )
}

Constructors

pub type ShopResourceFeedbackRecord {
  ShopResourceFeedbackRecord(
    id: String,
    state: String,
    feedback_generated_at: String,
    messages: List(String),
  )
}

Constructors

  • ShopResourceFeedbackRecord(
      id: String,
      state: String,
      feedback_generated_at: String,
      messages: List(String),
    )
pub type ShopResourceLimitsRecord {
  ShopResourceLimitsRecord(
    location_limit: Int,
    max_product_options: Int,
    max_product_variants: Int,
    redirect_limit_reached: Bool,
  )
}

Constructors

  • ShopResourceLimitsRecord(
      location_limit: Int,
      max_product_options: Int,
      max_product_variants: Int,
      redirect_limit_reached: Bool,
    )

Mirrors the selected App object carried by upstream-hydrated ShopifyFunctionRecord.app metadata.

pub type ShopifyFunctionAppRecord {
  ShopifyFunctionAppRecord(
    typename: option.Option(String),
    id: option.Option(String),
    title: option.Option(String),
    handle: option.Option(String),
    api_key: option.Option(String),
  )
}

Constructors

Mirrors ShopifyFunctionRecord. Locally minted records do not invent app metadata, but captured/upstream-seeded records preserve their owner app shape for downstream reads.

pub type ShopifyFunctionRecord {
  ShopifyFunctionRecord(
    id: String,
    title: option.Option(String),
    handle: option.Option(String),
    api_type: option.Option(String),
    description: option.Option(String),
    app_key: option.Option(String),
    app: option.Option(ShopifyFunctionAppRecord),
  )
}

Constructors

Mirrors StoreCreditAccountRecord.

pub type StoreCreditAccountRecord {
  StoreCreditAccountRecord(
    id: String,
    customer_id: String,
    cursor: option.Option(String),
    balance: Money,
  )
}

Constructors

  • StoreCreditAccountRecord(
      id: String,
      customer_id: String,
      cursor: option.Option(String),
      balance: Money,
    )

Mirrors StoreCreditAccountTransactionRecord.

pub type StoreCreditAccountTransactionRecord {
  StoreCreditAccountTransactionRecord(
    id: String,
    account_id: String,
    amount: Money,
    balance_after_transaction: Money,
    created_at: String,
    event: String,
  )
}

Constructors

  • StoreCreditAccountTransactionRecord(
      id: String,
      account_id: String,
      amount: Money,
      balance_after_transaction: Money,
      created_at: String,
      event: String,
    )

Locally staged publishable mutation payload for the minimal Product / Collection publication projection used by Store Properties parity.

pub type StorePropertyMutationPayloadRecord {
  StorePropertyMutationPayloadRecord(
    key: String,
    data: dict.Dict(String, StorePropertyValue),
  )
}

Constructors

Captured Store Properties resource row, keyed by Shopify GID where the captured payload has one. cursor preserves connection order evidence.

pub type StorePropertyRecord {
  StorePropertyRecord(
    id: String,
    cursor: option.Option(String),
    data: dict.Dict(String, StorePropertyValue),
  )
}

Constructors

JSON-shaped Store Properties resource value. This is used for captured Location, BusinessEntity, Product, and Collection projection slices whose full owning domains have not all been ported yet.

pub type StorePropertyValue {
  StorePropertyNull
  StorePropertyString(String)
  StorePropertyBool(Bool)
  StorePropertyInt(Int)
  StorePropertyFloat(Float)
  StorePropertyList(List(StorePropertyValue))
  StorePropertyObject(dict.Dict(String, StorePropertyValue))
}

Constructors

Mirrors TaxAppConfigurationRecord. The proxy stores this as a singleton (one configuration per shop), unlike the validation / cart-transform records which live in keyed dictionaries.

pub type TaxAppConfigurationRecord {
  TaxAppConfigurationRecord(
    id: String,
    ready: Bool,
    state: String,
    updated_at: option.Option(String),
  )
}

Constructors

  • TaxAppConfigurationRecord(
      id: String,
      ready: Bool,
      state: String,
      updated_at: option.Option(String),
    )

Mirrors TranslationRecord. One translation entry keyed by (resource_id, locale, market_id, key). translatable_content_digest is the upstream digest the client supplied at register time; outdated flips to True when the underlying source content changes (this port treats every staged translation as fresh — outdated: False — until source-content tracking ports).

pub type TranslationRecord {
  TranslationRecord(
    resource_id: String,
    key: String,
    locale: String,
    value: String,
    translatable_content_digest: String,
    market_id: option.Option(String),
    updated_at: String,
    outdated: Bool,
  )
}

Constructors

  • TranslationRecord(
      resource_id: String,
      key: String,
      locale: String,
      value: String,
      translatable_content_digest: String,
      market_id: option.Option(String),
      updated_at: String,
      outdated: Bool,
    )

Mirrors ValidationRecord. enable/blockOnFailure are nullable in TS so the same handler can model partial upstream payloads; here they’re Option(Bool).

pub type ValidationRecord {
  ValidationRecord(
    id: String,
    title: option.Option(String),
    enable: option.Option(Bool),
    block_on_failure: option.Option(Bool),
    function_id: option.Option(String),
    function_handle: option.Option(String),
    shopify_function_id: option.Option(String),
    created_at: option.Option(String),
    updated_at: option.Option(String),
  )
}

Constructors

Mirrors WebPresenceRecord in src/state/types.ts.

pub type WebPresenceRecord {
  WebPresenceRecord(
    id: String,
    cursor: option.Option(String),
    data: CapturedJsonValue,
  )
}

Constructors

Mirrors WebhookSubscriptionEndpointRecord in src/state/types.ts. The TS schema is one record with all three endpoint variants and a __typename discriminator; in Gleam it’s a sum type with one variant per endpoint kind. Each variant only carries the fields its __typename uses, so impossible combinations (e.g. an HTTP endpoint with an arn) are unrepresentable.

pub type WebhookSubscriptionEndpoint {
  WebhookHttpEndpoint(callback_url: option.Option(String))
  WebhookEventBridgeEndpoint(arn: option.Option(String))
  WebhookPubSubEndpoint(
    pub_sub_project: option.Option(String),
    pub_sub_topic: option.Option(String),
  )
}

Constructors

Mirrors WebhookSubscriptionRecord. endpoint is None to model the TS endpoint: ... | null.

pub type WebhookSubscriptionRecord {
  WebhookSubscriptionRecord(
    id: String,
    topic: option.Option(String),
    uri: option.Option(String),
    name: option.Option(String),
    format: option.Option(String),
    include_fields: List(String),
    metafield_namespaces: List(String),
    filter: option.Option(String),
    created_at: option.Option(String),
    updated_at: option.Option(String),
    endpoint: option.Option(WebhookSubscriptionEndpoint),
  )
}

Constructors

Search Document