Revolut · Schema

PassCreateEnvelope

A pass being created or provisioned, in any supported format. The `format` field selects the encoding; see the individual schemas for each variant. The optional `template_id` is always a root-level creation setting, regardless of format. - `revpass`: Revolut's native semantic model. The `rev_pass.type` discriminator further selects the content structure — typed passes (`boarding_pass`, `event_pass`, `loyalty_pass`) carry `semantics`; generic passes (`generic_pass`) carry `fields` and an optional `presentation` layout. - `pkpass_base64`: A `.pkpass` file, base64-encoded as a string. - `pkpass_url`: A URL pointing to a `.pkpass` file for Revolut to download. - `walletobjects_json`: A Wallet Objects resource family and its class/object pair under `walletobjects`. This multi-format envelope is available from API version `2026-07-01`. The set of formats is closed within this API version; new pass formats are published under a new dated API version, not added to `2026-07-01`. New `rev_pass.type` values may be added over time and are available in all supported API versions. Requests with an unrecognised `format` value are rejected with `422` (`unsupported_format`).

CompanyFintechPaymentsBankingOpen BankingMerchant AcquiringCryptocurrencyCardsConsumer Banking
View JSON Schema on GitHub

JSON Schema

revolut-pass-create-envelope-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/revolut/main/json-schema/revolut-pass-create-envelope-schema.json",
  "title": "PassCreateEnvelope",
  "description": "A pass being created or provisioned, in any supported format. The `format` field selects the\nencoding; see the individual schemas for each variant. The optional `template_id` is always a\nroot-level creation setting, regardless of format.\n\n- `revpass`: Revolut's native semantic model. The `rev_pass.type` discriminator further selects the\n  content structure — typed passes (`boarding_pass`, `event_pass`, `loyalty_pass`) carry `semantics`;\n  generic passes (`generic_pass`) carry `fields` and an optional `presentation` layout.\n- `pkpass_base64`: A `.pkpass` file, base64-encoded as a string.\n- `pkpass_url`: A URL pointing to a `.pkpass` file for Revolut to download.\n- `walletobjects_json`: A Wallet Objects resource family and its class/object pair under `walletobjects`.\n\nThis multi-format envelope is available from API version `2026-07-01`. The set of formats is\nclosed within this API version; new pass formats are published under a new dated API version,\nnot added to `2026-07-01`. New `rev_pass.type` values may be added over time and are available\nin all supported API versions. Requests with an unrecognised `format` value are rejected with `422`\n(`unsupported_format`).\n",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/revolut-wallet-partner-api-openapi.yml#/components/schemas/PassCreateEnvelope",
  "required": [
    "format"
  ],
  "oneOf": [
    {
      "$ref": "#/$defs/RevPassCreateEnvelope"
    },
    {
      "$ref": "#/$defs/PkPassBase64"
    },
    {
      "$ref": "#/$defs/PkPassUrl"
    },
    {
      "$ref": "#/$defs/WalletObjectsPass"
    }
  ],
  "$defs": {
    "Action": {
      "type": "object",
      "description": "A button rendered on the pass (e.g. \"Open website\", \"Get directions\").",
      "required": [
        "id",
        "type",
        "label",
        "url"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier for the action within this pass."
        },
        "type": {
          "type": "string",
          "description": "Documented values: `open_external_url`. External URL domain needs to be registered at onboarding."
        },
        "label": {
          "description": "Display label for the button, with optional localisation.",
          "$ref": "#/$defs/LocalisedText"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Target URL for `open_external_url` actions."
        },
        "importance": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5,
          "description": "Relative prominence of this action (5 = primary, 1 = least prominent)."
        }
      }
    },
    "Airport": {
      "type": "object",
      "description": "Airport details for a flight.",
      "required": [
        "iata"
      ],
      "properties": {
        "iata": {
          "type": "string",
          "description": "IATA airport code (3 uppercase letters).",
          "pattern": "^[A-Z]{3}$"
        },
        "name": {
          "type": "string",
          "description": "Full name of the airport (e.g. London Luton Airport)."
        },
        "city": {
          "type": "string",
          "description": "City where the airport is located."
        },
        "country_code": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 country code.",
          "pattern": "^[A-Z]{2}$"
        },
        "terminal": {
          "type": "string",
          "description": "Terminal identifier at the airport."
        }
      }
    },
    "Barcode": {
      "type": "object",
      "description": "A machine-readable barcode displayed on a Revolut native pass.",
      "required": [
        "format",
        "encoding",
        "type",
        "static_payload"
      ],
      "properties": {
        "format": {
          "type": "string",
          "enum": [
            "qr",
            "pdf417",
            "aztec",
            "code128"
          ],
          "description": "Symbology used to render the barcode."
        },
        "encoding": {
          "type": "string",
          "enum": [
            "ISO-8859-1"
          ],
          "description": "Character encoding used for `static_payload`."
        },
        "type": {
          "type": "string",
          "enum": [
            "static"
          ],
          "description": "Payload type. Only static barcode payloads are supported."
        },
        "static_payload": {
          "type": "string",
          "minLength": 1,
          "description": "Static value encoded in the barcode."
        }
      }
    },
    "Boarding": {
      "type": "object",
      "description": "Boarding details for a flight — gate, seat, and boarding time.",
      "properties": {
        "gate": {
          "type": "string",
          "description": "Boarding gate at the departure airport."
        },
        "boarding_at": {
          "type": "string",
          "format": "date-time",
          "description": "Scheduled boarding time, UTC, ISO 8601."
        },
        "boarding_group": {
          "type": "string",
          "description": "Boarding group or zone (airline-specific, e.g. A, B, 1, 2)."
        },
        "sequence_number": {
          "type": "string",
          "description": "Boarding sequence number assigned to the passenger."
        },
        "seat": {
          "type": "string",
          "description": "Assigned seat number (e.g. 14C, 22A)."
        },
        "seat_class": {
          "type": "string",
          "description": "Seat class label (e.g. Economy, Premium Economy, Business)."
        }
      }
    },
    "BoardingPassSemantics": {
      "type": "object",
      "description": "Semantic tags for a boarding pass.",
      "required": [
        "passenger",
        "flight",
        "booking"
      ],
      "properties": {
        "passenger": {
          "description": "Passenger details.",
          "$ref": "#/$defs/Passenger"
        },
        "flight": {
          "description": "Flight details.",
          "$ref": "#/$defs/Flight"
        },
        "boarding": {
          "description": "Boarding details (gate, seat, boarding time).",
          "$ref": "#/$defs/Boarding"
        },
        "booking": {
          "description": "Booking details (PNR, ticket number).",
          "$ref": "#/$defs/Booking"
        },
        "validity": {
          "description": "Optional validity window for the pass.",
          "$ref": "#/$defs/Validity"
        }
      }
    },
    "Booking": {
      "type": "object",
      "description": "Booking details for a boarding pass.",
      "required": [
        "pnr"
      ],
      "properties": {
        "pnr": {
          "type": "string",
          "description": "Passenger Name Record — the booking reference from the airline's reservation system."
        },
        "ticket_number": {
          "type": "string",
          "description": "13-digit IATA ticket number.",
          "pattern": "^[0-9]{13}$"
        },
        "booking_reference": {
          "type": "string",
          "description": "Alternative booking reference (e.g. agency or GDS reference), if different from the PNR."
        }
      }
    },
    "Branding": {
      "type": "object",
      "description": "Optional visual branding for a pass.",
      "required": [
        "brand_name",
        "logo",
        "background_image"
      ],
      "oneOf": [
        {
          "required": [
            "predefined_style"
          ]
        },
        {
          "required": [
            "colours"
          ]
        }
      ],
      "properties": {
        "brand_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 25,
          "description": "Brand name displayed on the pass."
        },
        "logo": {
          "description": "Logo image used by the pass.",
          "$ref": "#/$defs/Image"
        },
        "background_image": {
          "description": "Background or hero image used by the pass.",
          "$ref": "#/$defs/Image"
        },
        "predefined_style": {
          "type": "string",
          "enum": [
            "material",
            "flat",
            "glass"
          ],
          "description": "Predefined visual style for the pass."
        },
        "colours": {
          "description": "Explicit colour scheme for the pass.",
          "$ref": "#/$defs/ColourScheme"
        }
      }
    },
    "ColourScheme": {
      "type": "object",
      "description": "Explicit colours used to render a branded pass.",
      "required": [
        "primary",
        "secondary",
        "background",
        "text_primary",
        "text_secondary",
        "label_primary",
        "label_secondary"
      ],
      "properties": {
        "primary": {
          "type": "string",
          "pattern": "^#[0-9A-Fa-f]{6}$"
        },
        "secondary": {
          "type": "string",
          "pattern": "^#[0-9A-Fa-f]{6}$"
        },
        "background": {
          "type": "string",
          "pattern": "^#[0-9A-Fa-f]{6}$"
        },
        "text_primary": {
          "type": "string",
          "pattern": "^#[0-9A-Fa-f]{6}$"
        },
        "text_secondary": {
          "type": "string",
          "pattern": "^#[0-9A-Fa-f]{6}$"
        },
        "label_primary": {
          "type": "string",
          "pattern": "^#[0-9A-Fa-f]{6}$"
        },
        "label_secondary": {
          "type": "string",
          "pattern": "^#[0-9A-Fa-f]{6}$"
        }
      }
    },
    "Coordinates": {
      "type": "object",
      "description": "Geographic coordinates (WGS 84).",
      "required": [
        "lat",
        "lng"
      ],
      "properties": {
        "lat": {
          "type": "number",
          "format": "double",
          "description": "Latitude in decimal degrees."
        },
        "lng": {
          "type": "number",
          "format": "double",
          "description": "Longitude in decimal degrees."
        }
      }
    },
    "DataCategory": {
      "type": "string",
      "enum": [
        "identity",
        "status",
        "time",
        "location",
        "verification",
        "attribute",
        "governance"
      ],
      "description": "Data category for the field. The category describes the type of information carried by\nthe field.\n\n| Value | Description |\n|-------|-------------|\n| `identity` | Primary subjects, holder names, pass titles, or card names. |\n| `status` | State metrics, membership tiers, or operational updates such as Delayed, Gold Tier, or Active. |\n| `time` | Temporal coordinates such as Start Time 19:00, boarding times, or expiry times. |\n| `location` | Spatial coordinates or places such as Seat 14C, Gate A7, venues, or addresses. |\n| `verification` | Human-readable fallback codes, member IDs, or order references. |\n| `attribute` | Domain properties such as Meal: Vegan, Class: Business, or Points: 1,400. |\n| `governance` | Contractual, legal, or reference information such as terms, disclaimers, or support phone numbers. |\n"
    },
    "Event": {
      "type": "object",
      "description": "Event details for an event pass.",
      "required": [
        "name",
        "held_on",
        "starts_at"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the event."
        },
        "category": {
          "type": "string",
          "description": "Documented values: `concert`, `sport`, `conference`, `theatre`, `festival`, `race`, `other`."
        },
        "edition": {
          "type": "string",
          "description": "Edition or iteration of a recurring event (e.g. 2026, Season 5)."
        },
        "held_on": {
          "type": "string",
          "format": "date",
          "description": "Calendar day of the event (use `starts_at` for the precise start time)."
        },
        "starts_at": {
          "type": "string",
          "format": "date-time",
          "description": "Start time of the event, UTC, ISO 8601."
        },
        "ends_at": {
          "type": "string",
          "format": "date-time",
          "description": "End time of the event, UTC, ISO 8601."
        },
        "doors_open_at": {
          "type": "string",
          "format": "date-time",
          "description": "Time the venue doors open, UTC, ISO 8601."
        }
      }
    },
    "EventPassSemantics": {
      "type": "object",
      "description": "Semantic tags for an event pass.",
      "required": [
        "event",
        "venue"
      ],
      "properties": {
        "event": {
          "description": "Event details (name, category, dates).",
          "$ref": "#/$defs/Event"
        },
        "venue": {
          "description": "Venue details (name, address, seat).",
          "$ref": "#/$defs/Venue"
        },
        "ticket": {
          "description": "Ticket details (number, type, booking reference).",
          "$ref": "#/$defs/Ticket"
        },
        "participant": {
          "description": "Participant details (name, company, role).",
          "$ref": "#/$defs/Participant"
        },
        "organiser": {
          "description": "Organiser details.",
          "$ref": "#/$defs/Organiser"
        },
        "validity": {
          "description": "Optional validity window for the pass.",
          "$ref": "#/$defs/Validity"
        }
      }
    },
    "FieldData": {
      "type": "object",
      "description": "Shared content, semantic metadata, and optional formatting hints for a generic-pass custom field.\nThe field `id` is referenced from the pass `presentation` configuration. When neither the pass\nnor its template provides a presentation, every field must provide `data_category` and\n`semantic_type`; `importance` remains optional.\n",
      "required": [
        "id",
        "label",
        "value"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/FieldId"
        },
        "label": {
          "description": "Display label for the field, with optional localisation.",
          "$ref": "#/$defs/LocalisedText"
        },
        "value": {
          "description": "Display value for the field, with optional localisation.",
          "$ref": "#/$defs/LocalisedText"
        },
        "data_type": {
          "type": "string",
          "description": "Interpretation of the field value. The `value` is always carried as a string (or a\nlocalised string map); `data_type` defines how Revolut parses and renders it:\n\n| Value | Wire representation |\n|-------|---------------------|\n| `text` | Any string. |\n| `number` | Plain decimal number as a string, e.g. `1400` or `1400.50` (no thousands separators; rendered per `number_style`). |\n| `currency` | Plain decimal amount as a string, e.g. `1400.50`, with `currency_code` (ISO 4217) alongside. |\n| `date_time` | RFC 3339 UTC timestamp, e.g. `2026-09-15T19:00:00.000Z`. |\n| `uri` | Absolute HTTPS URI string, e.g. `https://example.com/offer`. |\n\nConditional rules: `currency` requires `currency_code`; `number_style` applies only to\n`number`; `date_style`, `time_style`, `is_relative`, and `ignores_time_zone` apply only\nto `date_time`.\n",
          "enum": [
            "text",
            "number",
            "currency",
            "date_time",
            "uri"
          ],
          "default": "text"
        },
        "data_category": {
          "description": "Category describing the information carried by the field. Required on every field when\nrendering falls back to semantic metadata; otherwise optional.\n",
          "$ref": "#/$defs/DataCategory"
        },
        "semantic_type": {
          "description": "Semantic identifier associated with the field. Required on every field when rendering falls\nback to semantic metadata; otherwise optional.\n",
          "$ref": "#/$defs/FieldSemanticType"
        },
        "importance": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5,
          "description": "Optional relative prominence of the field (5 = highest, 1 = lowest), used for semantic\nrendering.\n"
        },
        "text_alignment": {
          "type": "string",
          "description": "Preferred text alignment when the renderer supports it.",
          "enum": [
            "left",
            "center",
            "right",
            "natural"
          ]
        },
        "date_style": {
          "type": "string",
          "description": "Preferred date display style for a `date_time` value.",
          "enum": [
            "none",
            "short",
            "medium",
            "long",
            "full"
          ]
        },
        "time_style": {
          "type": "string",
          "description": "Preferred time display style for a `date_time` value.",
          "enum": [
            "none",
            "short",
            "medium",
            "long",
            "full"
          ]
        },
        "is_relative": {
          "type": "boolean",
          "description": "Whether a date and time value should be presented relative to the current time."
        },
        "ignores_time_zone": {
          "type": "boolean",
          "description": "Whether a date and time value should be shown without time-zone conversion."
        },
        "number_style": {
          "type": "string",
          "description": "Preferred display style for a numeric value.",
          "enum": [
            "decimal",
            "percent",
            "scientific",
            "spell_out"
          ]
        },
        "currency_code": {
          "type": "string",
          "pattern": "^[A-Z]{3}$",
          "description": "ISO 4217 currency code for a `currency` value. Required when `data_type` is `currency`."
        }
      }
    },
    "FieldId": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9_-]+$",
      "description": "Unique identifier for a custom field within a generic pass."
    },
    "FieldSemanticType": {
      "type": "string",
      "minLength": 1,
      "description": "Optional semantic tag associated with the field. \n\nThe following values are currently exposed by the typed pass schemas in current API version.\nUse the public snake_case path names.\n\n**Boarding passes**\n\n`passenger.full_name`, `passenger.fare_class`, `passenger.fare_class_code`,\n`passenger.frequent_flyer_program`, `passenger.frequent_flyer_number`, `flight.flight_number`,\n`flight.carrier_code`, `flight.carrier_name`, `flight.operating_carrier_code`,\n`flight.departure_airport.iata`, `flight.departure_airport.name`, `flight.departure_airport.city`,\n`flight.departure_airport.country_code`, `flight.departure_airport.terminal`,\n`flight.arrival_airport.iata`, `flight.arrival_airport.name`, `flight.arrival_airport.city`,\n`flight.arrival_airport.country_code`, `flight.arrival_airport.terminal`,\n`flight.scheduled_departure_at`, `flight.scheduled_arrival_at`, `flight.aircraft_type`,\n`boarding.gate`, `boarding.boarding_at`, `boarding.boarding_group`, `boarding.sequence_number`,\n`boarding.seat`, `boarding.seat_class`, `booking.pnr`, `booking.ticket_number`,\n`booking.booking_reference`, `validity.valid_from`, `validity.valid_until`.\n\n**Event passes**\n\n`event.name`, `event.category`, `event.edition`, `event.held_on`, `event.starts_at`,\n`event.ends_at`, `event.doors_open_at`, `venue.name`, `venue.address`, `venue.city`,\n`venue.country_code`, `venue.coordinates.lat`, `venue.coordinates.lng`, `venue.gate`,\n`venue.section`, `venue.row`, `venue.seat`, `ticket.number`, `ticket.booking_reference`,\n`ticket.type`, `participant.full_name`, `participant.company`, `participant.role`,\n`organiser.name`, `validity.valid_from`, `validity.valid_until`.\n\n**Loyalty passes**\n\n`member.full_name`, `member.member_id`, `member.member_since_on`, `loyalty.program_name`,\n`loyalty.tier`, `loyalty.tier_progress.current`, `loyalty.tier_progress.target`,\n`loyalty.tier_progress.unit`, `loyalty.points_balance.value`, `loyalty.points_balance.unit`,\n`loyalty.points_balance.monetary_value.amount`, `loyalty.points_balance.monetary_value.currency`,\n`loyalty.next_reward.description`, `loyalty.next_reward.points_required`,\n`validity.valid_from`, `validity.valid_until`.\n"
    },
    "Flight": {
      "type": "object",
      "description": "Flight details for a boarding pass.",
      "required": [
        "flight_number",
        "carrier_code",
        "departure_airport",
        "arrival_airport",
        "scheduled_departure_at",
        "scheduled_arrival_at"
      ],
      "properties": {
        "flight_number": {
          "type": "string",
          "description": "Flight number without the carrier code (e.g. 2241, not SJ2241)."
        },
        "carrier_code": {
          "type": "string",
          "description": "IATA (2-character) or ICAO (3-character) carrier code.",
          "pattern": "^[A-Z0-9]{2,3}$"
        },
        "carrier_name": {
          "type": "string",
          "description": "Display name of the operating carrier."
        },
        "operating_carrier_code": {
          "type": "string",
          "description": "IATA (2-character) or ICAO (3-character) carrier code of the actual operating carrier (for codeshare flights, this may differ from `carrier_code`).",
          "pattern": "^[A-Z0-9]{2,3}$"
        },
        "departure_airport": {
          "description": "Departure airport.",
          "$ref": "#/$defs/Airport"
        },
        "arrival_airport": {
          "description": "Arrival airport.",
          "$ref": "#/$defs/Airport"
        },
        "scheduled_departure_at": {
          "type": "string",
          "format": "date-time",
          "description": "Scheduled departure time, UTC, ISO 8601."
        },
        "scheduled_arrival_at": {
          "type": "string",
          "format": "date-time",
          "description": "Scheduled arrival time, UTC, ISO 8601."
        },
        "aircraft_type": {
          "type": "string",
          "description": "IATA aircraft type code (e.g. A320, B738)."
        }
      }
    },
    "Image": {
      "type": "object",
      "description": "An image used by pass branding.",
      "oneOf": [
        {
          "required": [
            "asset_ref"
          ],
          "not": {
            "required": [
              "data"
            ]
          }
        },
        {
          "required": [
            "data",
            "format"
          ],
          "not": {
            "required": [
              "asset_ref"
            ]
          }
        }
      ],
      "properties": {
        "asset_ref": {
          "type": "string",
          "pattern": "^revasset://(public|private)/[0-9a-fA-F-]{36}$",
          "description": "Reference to an image asset managed by Revolut."
        },
        "data": {
          "type": "string",
          "contentEncoding": "base64",
          "minLength": 1,
          "description": "Base64-encoded image bytes."
        },
        "format": {
          "type": "string",
          "enum": [
            "image/png",
            "image/jpeg",
            "image/webp"
          ],
          "description": "Image MIME type."
        },
        "description": {
          "type": "string",
          "description": "Accessible description of the image."
        }
      }
    },
    "Issuer": {
      "type": "object",
      "description": "Issuer information displayed on a pass.",
      "required": [
        "issuer_id",
        "issuer_full_name",
        "issuer_display_name"
      ],
      "properties": {
        "issuer_id": {
          "type": "string",
          "format": "uuid",
          "readOnly": true,
          "description": "Revolut-managed identifier of the issuer. Revolut derives this value from the authenticated\npartner and returns the partner's Revolut-assigned UUID; do not send it in request bodies.\n"
        },
        "issuer_full_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50,
          "description": "Full legal name of the issuer."
        },
        "issuer_display_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 25,
          "description": "Display name of the issuer."
        }
      }
    },
    "LocalisedText": {
      "type": "object",
      "description": "Text with optional localisation support.",
      "required": [
        "default"
      ],
      "properties": {
        "default": {
          "type": "string",
          "description": "Fallback text when no localisation matches."
        },
        "localisation_key": {
          "type": "string",
          "description": "Key resolved at render time against the template's localisation map, then Revolut's\nlocalisation catalogue (Revolut-curated translations for standard pass strings), falling\nback to the `default` text.\n"
        }
      }
    },
    "Loyalty": {
      "type": "object",
      "description": "Loyalty program details for a pass.",
      "required": [
        "program_name"
      ],
      "properties": {
        "program_name": {
          "type": "string",
          "description": "Display name of the loyalty program."
        },
        "tier": {
          "type": "string",
          "description": "Current tier level of the member (e.g. Gold, Silver, Bronze)."
        },
        "tier_progress": {
          "description": "Progress towards the next tier.",
          "$ref": "#/$defs/TierProgress"
        },
        "points_balance": {
          "description": "Current points balance.",
          "$ref": "#/$defs/PointsBalance"
        },
        "next_reward": {
          "description": "Next reward the member can unlock.",
          "$ref": "#/$defs/NextReward"
        }
      }
    },
    "LoyaltyPassSemantics": {
      "type": "object",
      "description": "Semantic tags for a loyalty pass.",
      "required": [
        "member",
        "loyalty"
      ],
      "properties": {
        "member": {
          "description": "Member details (name, ID, join date).",
          "$ref": "#/$defs/Member"
        },
        "loyalty": {
          "description": "Loyalty program details (tier, balance, next reward).",
          "$ref": "#/$defs/Loyalty"
        },
        "validity": {
          "description": "Optional validity window for the pass.",
          "$ref": "#/$defs/Validity"
        }
      }
    },
    "Member": {
      "type": "object",
      "description": "Member details for a loyalty pass.",
      "required": [
        "full_name",
        "member_id"
      ],
      "properties": {
        "full_name": {
          "type": "string",
          "description": "Full name of the loyalty program member."
        },
        "member_id": {
          "type": "string",
          "description": "Membership number or ID within the loyalty program."
        },
        "member_since_on": {
          "type": "string",
          "format": "date",
          "description": "Date the member joined the programme."
        }
      }
    },
    "Money": {
      "type": "object",
      "description": "ISO 4217 monetary amount, represented as strings to preserve decimal precision. Amounts are non-negative.",
      "required": [
        "amount",
        "currency"
      ],
      "properties": {
        "amount": {
          "type": "string",
          "pattern": "^\\d+(\\.\\d+)?$",
          "description": "Non-negative decimal amount as a string (e.g. \"72.40\")."
        },
        "currency": {
          "type": "string",
          "pattern": "^[A-Z]{3}$",
          "description": "ISO 4217 currency code (e.g. GBP, EUR, USD)."
        }
      }
    },
    "NextReward": {
      "type": "object",
      "description": "Next reward the member can unlock with their points.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Human-readable description of the reward (e.g. \"Free coffee voucher\")."
        },
        "points_required": {
          "type": "string",
          "description": "Points required to unlock the reward, as a string."
        }
      }
    },
    "Organiser": {
      "type": "object",
      "description": "Organiser of the event.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the organising company or individual."
        }
      }
    },
    "Participant": {
      "type": "object",
      "description": "Participant details for an event pass (e.g. conference attendee).",
      "properties": {
        "full_name": {
          "type": "string",
          "description": "Full name of the participant."
        },
        "company": {
          "type": "string",
          "description": "Company or organisation the participant represents."
        },
        "role": {
          "type": "string",
          "description": "Role or title at the event (e.g. Speaker, Attendee, Volunteer)."
        }
      }
    },
    "PartnerPassRevision": {
      "type": "object",
      "description": "Fields that identify a partner's pass and the revision being submitted.",
      "required": [
        "partner_reference",
        "version"
      ],
      "properties": {
        "partner_reference": {
          "type": "string",
          "maxLength": 128,
          "description": "Your own reference for the pass; use it to match the pass in your system. Immutable after\ncreation. On `PUT /passes/{id}`, it must match the pass addressed in the path; a mismatch\nis rejected with `422`.\n"
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "minimum": 1,
          "description": "Your pass revision. Must be `1` on create. On update, must equal the currently stored\nversion exactly plus one: reusing an already-stored version, replaying an older one, or\nskipping ahead are all rejected with `409` (`stale_version`).\n"
        }
      }
    },
    "Passenger": {
      "type": "object",
      "description": "Passenger details for a boarding pass.",
      "required": [
        "full_name"
      ],
      "properties": {
        "full_name": {
          "type": "string",
          "description": "Full name of the passenger as it appears on the boarding pass."
        },
        "fare_class": {
          "type": "string",
          "description": "Human-readable fare class (e.g. Economy, Business, First)."
        },
        "fare_class_code": {
          "type": "string",
          "description": "IATA fare class code (single letter, e.g. Y for Economy, J for Business)."
        },
        "frequent_flyer_program": {
          "type": "string",
          "description": "Name of the frequent flyer program the passenger belongs to."
        },
        "frequent_flyer_number": {
          "type": "string",
          "description": "Membership number within the frequent flyer program."
        }
      }
    },
    "PkPassBase64": {
      "description": "A pass created from a `.pkpass` file, provided as a base64-encoded string.\nRevolut parses the `pass.json` inside, extracts the semantic content, and renders the pass\nnatively. Images and translations inside the `.pkpass` are used where possible.\n",
      "allOf": [
        {
          "$ref": "#/$defs/PartnerPassRevision"
        },
        {
          "$ref": "#/$defs/PkPassBase64Format"
        },
        {
          "$ref": "#/$defs/TemplateOverride"
        }
      ]
    },
    "PkPassBase64Format": {
      "type": "object",
      "description": "Format-specific fields for a `.pkpass` file supplied as a base64-encoded string.",
      "required": [
        "format",
        "pkpass"
      ],
      "properties": {
        "format": {
          "type": "string",
          "enum": [
            "pkpass_base64"
          ],
          "description": "Pass format discriminator."
        },
        "pkpass": {
          "type": "string",
          "contentEncoding": "base64",
          "contentMediaType": "application/vnd.apple.pkpass",
          "description": "The raw `.pkpass` file (a signed ZIP archive), base64-encoded as a string. Must decode to\nat most 10 MB.\n"
        }
      }
    },
    "PkPassUrl": {
      "description": "A pass created from a `.pkpass` file, provided via a download URL. Revolut fetches\nthe `.pkpass` file from the URL, parses the `pass.json` inside, extracts the sem

# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/revolut/refs/heads/main/json-schema/revolut-pass-create-envelope-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/revolut-pass-create-envelope"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.