Safi.pkFOR AGENTSکوٹیشن کی درخواست ↗

ڈویلپر رہنمائی: درست تکنیکی مثالیں انگریزی میں دی گئی ہیں۔ قیمت، اہلیت اور فراہمی کی تصدیق ضروری ہے۔

SAFI / DEVELOPER HUB / v1.1

Five practical purchasing flows.

Use catalog facts and visible blockers to decide what to do next. These are local integration scenarios, not customer transactions.

WORKED EXAMPLE A / 2026-11-08.1

Two WordPress sites: compare, explain and quote

{
  "command": "recommend",
  "requirements": {
    "sites": 2,
    "storage_gb": 20
  }
}

Both plans fit the declared two-site/20 GB requirement. Shared hosting leaves applications/content with the customer; managed WordPress offers assistance within an agreed scope. Runtime, traffic, backups, response times and other unknown limits still need confirmation.

Current shared catalog reference amounts in integer PKR minor units; 100 paisa = PKR 1
PlanSites / storageAnnual initialAnnual renewalAuthority
SAFI Grow2 sites / 50 GB12666001666600Safi.pk product facts ↗
SAFI SiteBoost2 sites / 50 GB10800000unknownSafi.pk product facts ↗
{
  "command": "quote",
  "quote": {
    "currency": "PKR",
    "lines": [
      {
        "product_id": "hosting-298",
        "offer_id": "annual",
        "quantity": 1
      }
    ]
  }
}

Calculated response subset, checked against the real API

{
  "state": "pending_review",
  "currency": "PKR",
  "price_kind": "calculated_quote",
  "initial_total_minor": 1266600,
  "setup_minor": null,
  "tax_treatment": "unknown",
  "provider_verified_checkout_minor": null,
  "lines": [
    {
      "renewal_minor": 1666600,
      "renewal_months": 12
    }
  ]
}

The lines[] subset above shows renewal fields from the actual first quote line. The quote is prepared and review is recorded. Setup, tax and provider-verified checkout amount remain unknown. Managed renewal is also unknown. Exact response fields are documented in OpenAPI; this projection does not create or accept an order.

WORKED EXAMPLE B / 2026-11-08.1

24 paid + 12 bonus = 36 service months

{
  "command": "quote",
  "quote": {
    "currency": "PKR",
    "lines": [
      {
        "product_id": "hosting-298",
        "offer_id": "two-plus-one",
        "quantity": 1
      }
    ]
  }
}
{
  "state": "pending_review",
  "currency": "PKR",
  "price_kind": "calculated_quote",
  "initial_total_minor": null,
  "provider_verified_checkout_minor": null,
  "lines": [
    {
      "paid_months": 24,
      "bonus_months": 12,
      "service_months": 36,
      "renewal_minor": null,
      "renewal_months": null
    }
  ]
}

Only the relevant fields of the first lines[] item are shown above. Payable and renewal amounts stay null. All checkout is disabled for this limited launch. The underlying task can be TASK_STATE_COMPLETED because it prepared this response; payment and activation have not occurred.

Readiness is a separate check

{
  "checkout_ready": false,
  "blockers": [
    "SAFI checkout must match the published 24-paid/36-service reference total",
    "Dedicated 36-month service entitlement and no invoice at month 24",
    "Next due date at month 36 and matching SAFI renewal configuration",
    "Promotion eligibility and trial non-stacking enforcement",
    "Multi-year amounts remain unconfirmed until the shared catalog owner finishes the contract"
  ],
  "trial_stacking": false,
  "paid_order_created": false,
  "service_provisioned": false
}

Send handoff with your current quote ID/revision and acknowledge_live_check:true. Expect checkout_disabled for this hosting offer. Trial and multi-year cannot stack:

{
  "command": "quote",
  "quote": {
    "currency": "PKR",
    "lines": [
      {
        "product_id": "hosting-298",
        "offer_id": "trial",
        "quantity": 1
      },
      {
        "product_id": "hosting-298",
        "offer_id": "two-plus-one",
        "quantity": 1
      }
    ]
  }
}

The server rejects that request with A2A malformed-parameter code -32602 (REST promotion_conflict/400). It does not silently add three trial months or infer annual × 2.

Reference source version e815478040ce374ddddbc1c2. This page derives amounts from the same catalog as the API; follow-up HTTP tests compare the illustrated response subsets and schemas with real quote results.

01

Find hosting for two WordPress sites

{
  "command": "recommend",
  "requirements": {
    "sites": 2,
    "storage_gb": 20
  }
}

Compare both families. Resource fit is not proof of runtime, traffic or operational suitability; confirm unknown limits and WordPress responsibilities.

02

Compare shared versus managed responsibilities

{
  "command": "discover",
  "product_id": "hosting-296"
}

Read features and policy.hosting. Shared customers manage applications/content; managed updates, backups and security help have an agreed scope. Neither label grants an unlimited support promise.

03

Request the 24-paid / 36-service offer

{
  "command": "quote",
  "quote": {
    "currency": "PKR",
    "lines": [
      {
        "product_id": "hosting-298",
        "offer_id": "two-plus-one",
        "quantity": 1
      }
    ]
  }
}

Expect 24 paid months, 12 bonus months, 36 service months, null payable amount and pending_review. Never calculate annual × 2 or stack a trial.

04

Handle an unknown price through review

{
  "command": "quote_status",
  "quote_id": "REPLACE_WITH_OWN_QUOTE_ID"
}

Read quote.lines[].blockers and reviews[].status. An open review is not approval. No notification is sent. Prepare a new quote after an authoritative catalog update.

05

Request a domain quote for manual review

{
  "command": "quote",
  "quote": {
    "currency": "PKR",
    "lines": [
      {
        "product_id": "domain-com",
        "offer_id": "registration",
        "quantity": 1,
        "domain": "Example-Agent-Demo.com"
      }
    ]
  }
}

Availability stays unverified. The quote is queued for manual review. A handoff request returns checkout_disabled; no cart URL or order is created.