Veyn Developer

Veyn Connect · draft v0.1

Manifest

A manifest is the signed, versioned JSON that declares a connector. It is the only source of what the connector can do.

Draft. Fields may change before launch. At launch only link and web modes and the prepare effect are accepted.

Example

{
  "spec": "veyn-connect/0.1",
  "id": "com.example.rides",
  "version": "1.2.0",
  "name": "Example Rides",
  "developer": {
    "id": "dev_8f2…",
    "contact": "security@example.com",
    "privacy": "https://example.com/privacy",
    "terms": "https://example.com/terms"
  },
  "regions": ["MY", "SG"],
  "locales": ["en", "ms", "zh"],
  "actions": [
    {
      "action": "ride.request",
      "mode": "link",
      "effect": "prepare",
      "scopes": ["place.destination"],
      "link": {
        "ios": "example://ride?dropLat={to.lat}&dropLng={to.lng}&dropName={to.label}",
        "android": "example://ride?dropLat={to.lat}&dropLng={to.lng}&dropName={to.label}",
        "web": "https://example.com/ride?dropLat={to.lat}&dropLng={to.lng}"
      },
      "probe": { "ios": "example://", "android": "com.example.rides" },
      "store": {
        "ios": "https://apps.apple.com/app/id…",
        "android": "https://play.google.com/store/apps/details?id=…"
      },
      "fillsInputs": true
    }
  ],
  "signature": "ed25519:…"
}

Fields

FieldRules
specveyn-connect/<major>.<minor>. Unknown majors are rejected.
idReverse-DNS, lower-case, [a-z0-9.-], up to 80 characters. Immutable once published. You must prove control of the domain.
versionSemver. A published version is immutable.
nameUp to 60 characters. No impersonation of another brand.
developerVerified developer id, security contact, privacy and terms URLs (https).
regionsISO 3166 alpha-2 codes, or ["*"]. Doyo offers the connector only there.
actions[]1–20 entries, one per action and mode.
actions[].actionMust be in Veyn's action catalog.
actions[].modelink or web at launch. later intent, api.
actions[].effectprepare: the user presses the last button in your service. later execute.
actions[].scopesOnly the data the action needs, from the scope list below.
signatureDetached signature over the canonical JSON by your registered key.

Action catalog

Veyn owns the vocabulary, so every connector for the same action takes the same inputs. Only Veyn adds actions; you can propose one in review.

ActionInputsAt launch
ride.requestto, from?, robotaxi?prepare
place.navigateto, from?, mode?prepare
food.ordermerchant, items[], deliverTolater opens your page only
booking.createservice, time, party?later opens your page only
message.sendto, bodylater
pay.requestpayee, amount, currency, referencelater

Modes

ModeLaunchWhat Veyn does
linkyesOpens your app or site with a link built from your template. Extra fields: link.{ios,android,web}, probe, store, fillsInputs.
webyesOpens your page in a Veyn-controlled web view. Extra fields: web.url, web.allowedHosts[].
intentlaterCalls an action your app declared to the OS (App Intents, Android intents).
apilaterCalls your HTTPS endpoint with a short-lived, scoped token.

When a user has several connectors for the same action, Veyn ranks them api, intent, link, web, after filtering by region and what is installed.

Scopes

A scope is the smallest piece of user data an action may receive. You get only the scopes the called action declares, only for that call.

ScopeYou receiveSensitivity
place.destinationThe chosen destination (label, address, coordinates)low
place.originA chosen origin, never the phone's live locationmedium
contact.recipientOne recipient the user pickedmedium
order.itemsItems and quantities the user approvedlow
address.deliveryOne delivery address the user pickedhigh
time.slotA chosen date and timelow
identity.nameDisplay namemedium
identity.phonePhone numberhigh
payment.requestA payee, amount and reference for the user to approve in their own payment apphigh

At T1 only low and medium scopes are available. Never offered: location history, other twins, documents, receipts, email, chat history, photos, scans, payment credentials, or any token.

Validation rules

Checked when you submit and again at every call.