Omise Recipients API

Manage the individual or corporation recipients that transfers are paid to - create, list, retrieve, update, delete, and verify - each holding a destination bank account, tax ID, and verification status. List the transfer schedules attached to a recipient.

OpenAPI Specification

omise-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Omise (Opn Payments) API
  description: >-
    Omise, now Opn Payments (part of Opn), is an online payment gateway for
    Thailand, Japan, and Singapore. This OpenAPI document describes a
    representative, grounded subset of the public REST API. The core API is
    served from https://api.omise.co and authenticated with a secret key via
    HTTP Basic (the key is the username, the password is empty). Raw card data
    is tokenized on a separate PCI-scoped vault host, https://vault.omise.co,
    authenticated with the public key. API behavior is pinned with the optional
    `Omise-Version` header. All monetary amounts are integers in the smallest
    unit of the currency (for example satang for THB, yen for JPY).

    Scope note: paths, methods, and object identifiers here are grounded in the
    published Omise documentation (docs.omise.co). Request and response schemas
    are modeled as a solid representative subset rather than a byte-for-byte
    mirror of every field; verify exact payloads against the live docs.
  version: 2019-05-29
  contact:
    name: Opn Payments (Omise)
    url: https://www.omise.co
  license:
    name: Proprietary
    url: https://www.omise.co
servers:
  - url: https://api.omise.co
    description: Core API (secret key)
  - url: https://vault.omise.co
    description: Vault - tokenization only (public key)
security:
  - secretKeyAuth: []
tags:
  - name: Charges
    description: Core payment object - authorize, capture, reverse, expire.
  - name: Tokens
    description: Single-use card tokenization on the vault host.
  - name: Sources
    description: Non-card / local payment method sources.
  - name: Customers
    description: Saved customers and their reusable cards.
  - name: Cards
    description: Cards saved against a customer.
  - name: Refunds
    description: Full or partial refunds against a charge.
  - name: Disputes
    description: Cardholder chargebacks and evidence.
  - name: Transfers
    description: Payouts from your balance to a recipient bank account.
  - name: Recipients
    description: Bank-account recipients that transfers pay out to.
  - name: Schedules
    description: Recurring charges and transfers.
  - name: Links
    description: Shareable payment links.
  - name: Events
    description: Account events backing webhooks.
  - name: Account
    description: Account profile and balance.
paths:
  /charges:
    post:
      operationId: createCharge
      tags: [Charges]
      summary: Create a charge
      description: >-
        Creates a charge funded by a token, a saved customer card, or a Source.
        Set `capture` to false to authorize only and capture later.
      parameters:
        - $ref: '#/components/parameters/OmiseVersion'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChargeCreate'
      responses:
        '200':
          description: The created charge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Charge'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '400':
          $ref: '#/components/responses/BadRequest'
    get:
      operationId: listCharges
      tags: [Charges]
      summary: List charges
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Order'
      responses:
        '200':
          description: A list of charges.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /charges/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getCharge
      tags: [Charges]
      summary: Retrieve a charge
      responses:
        '200':
          description: The requested charge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Charge'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateCharge
      tags: [Charges]
      summary: Update a charge
      description: Updates the description or metadata of a charge.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                metadata:
                  type: object
                  additionalProperties: true
      responses:
        '200':
          description: The updated charge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Charge'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /charges/{id}/capture:
    parameters:
      - $ref: '#/components/parameters/Id'
    post:
      operationId: captureCharge
      tags: [Charges]
      summary: Capture a charge
      description: Captures a previously authorized (uncaptured) charge.
      responses:
        '200':
          description: The captured charge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Charge'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /charges/{id}/reverse:
    parameters:
      - $ref: '#/components/parameters/Id'
    post:
      operationId: reverseCharge
      tags: [Charges]
      summary: Reverse a charge
      description: Reverses an authorized charge that has not yet been captured.
      responses:
        '200':
          description: The reversed charge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Charge'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /charges/{id}/expire:
    parameters:
      - $ref: '#/components/parameters/Id'
    post:
      operationId: expireCharge
      tags: [Charges]
      summary: Expire a charge
      description: Expires a pending charge so it can no longer be paid.
      responses:
        '200':
          description: The expired charge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Charge'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /charges/{id}/refunds:
    parameters:
      - $ref: '#/components/parameters/Id'
    post:
      operationId: createRefund
      tags: [Refunds]
      summary: Create a refund
      description: Refunds all or part of a charge.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [amount]
              properties:
                amount:
                  type: integer
                  description: Amount to refund, in the smallest currency unit.
                metadata:
                  type: object
                  additionalProperties: true
      responses:
        '200':
          description: The created refund.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Refund'
        '401':
          $ref: '#/components/responses/Unauthorized'
    get:
      operationId: listChargeRefunds
      tags: [Refunds]
      summary: List refunds for a charge
      responses:
        '200':
          description: A list of refunds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /charges/{id}/refunds/{refund_id}:
    parameters:
      - $ref: '#/components/parameters/Id'
      - name: refund_id
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getRefund
      tags: [Refunds]
      summary: Retrieve a refund
      responses:
        '200':
          description: The requested refund.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Refund'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /refunds:
    get:
      operationId: listAllRefunds
      tags: [Refunds]
      summary: List all refunds
      responses:
        '200':
          description: A list of refunds across the account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /tokens:
    post:
      operationId: createToken
      tags: [Tokens]
      summary: Create a token
      description: >-
        Tokenizes raw card data. Served from the vault host
        (https://vault.omise.co) and authenticated with the public key. Tokens
        are single-use.
      servers:
        - url: https://vault.omise.co
      security:
        - publicKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [card]
              properties:
                card:
                  $ref: '#/components/schemas/CardInput'
      responses:
        '200':
          description: The created token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /tokens/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    servers:
      - url: https://vault.omise.co
    get:
      operationId: getToken
      tags: [Tokens]
      summary: Retrieve a token
      security:
        - publicKeyAuth: []
      responses:
        '200':
          description: The requested token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
        '404':
          $ref: '#/components/responses/NotFound'
  /sources:
    post:
      operationId: createSource
      tags: [Sources]
      summary: Create a source
      description: >-
        Creates a payment Source for a non-card method (for example promptpay,
        truemoney, internet_banking_bbl, mobile_banking_scb, installment_kbank,
        alipay, rabbit_linepay). Can be created with the public key.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourceCreate'
      responses:
        '200':
          description: The created source.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Source'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /sources/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getSource
      tags: [Sources]
      summary: Retrieve a source
      responses:
        '200':
          description: The requested source.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Source'
        '404':
          $ref: '#/components/responses/NotFound'
  /customers:
    post:
      operationId: createCustomer
      tags: [Customers]
      summary: Create a customer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerInput'
      responses:
        '200':
          description: The created customer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer'
        '401':
          $ref: '#/components/responses/Unauthorized'
    get:
      operationId: listCustomers
      tags: [Customers]
      summary: List customers
      responses:
        '200':
          description: A list of customers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /customers/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getCustomer
      tags: [Customers]
      summary: Retrieve a customer
      responses:
        '200':
          description: The requested customer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateCustomer
      tags: [Customers]
      summary: Update a customer
      description: >-
        Updates a customer. Pass a token in `card` to attach a new saved card.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerInput'
      responses:
        '200':
          description: The updated customer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteCustomer
      tags: [Customers]
      summary: Delete a customer
      responses:
        '200':
          description: Deletion confirmation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Deleted'
        '404':
          $ref: '#/components/responses/NotFound'
  /customers/{id}/cards:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: listCustomerCards
      tags: [Cards]
      summary: List a customer's cards
      responses:
        '200':
          description: A list of the customer's cards.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /customers/{id}/cards/{card_id}:
    parameters:
      - $ref: '#/components/parameters/Id'
      - name: card_id
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getCustomerCard
      tags: [Cards]
      summary: Retrieve a card
      responses:
        '200':
          description: The requested card.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Card'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateCustomerCard
      tags: [Cards]
      summary: Update a card
      description: Updates the billing details of a saved card.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: The updated card.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Card'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteCustomerCard
      tags: [Cards]
      summary: Delete a card
      responses:
        '200':
          description: Deletion confirmation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Deleted'
        '404':
          $ref: '#/components/responses/NotFound'
  /disputes:
    get:
      operationId: listDisputes
      tags: [Disputes]
      summary: List all disputes
      responses:
        '200':
          description: A list of disputes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /disputes/{status}:
    parameters:
      - name: status
        in: path
        required: true
        description: One of open, pending, or closed.
        schema:
          type: string
          enum: [open, pending, closed]
    get:
      operationId: listDisputesByStatus
      tags: [Disputes]
      summary: List disputes by status
      responses:
        '200':
          description: A filtered list of disputes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /disputes/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getDispute
      tags: [Disputes]
      summary: Retrieve a dispute
      responses:
        '200':
          description: The requested dispute.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dispute'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateDispute
      tags: [Disputes]
      summary: Update a dispute
      description: Adds an evidence message or metadata to a dispute.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                metadata:
                  type: object
                  additionalProperties: true
      responses:
        '200':
          description: The updated dispute.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dispute'
        '404':
          $ref: '#/components/responses/NotFound'
  /disputes/{id}/accept:
    parameters:
      - $ref: '#/components/parameters/Id'
    patch:
      operationId: acceptDispute
      tags: [Disputes]
      summary: Accept a dispute
      description: Accepts the dispute, conceding the chargeback.
      responses:
        '200':
          description: The accepted dispute.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dispute'
        '404':
          $ref: '#/components/responses/NotFound'
  /transfers:
    post:
      operationId: createTransfer
      tags: [Transfers]
      summary: Create a transfer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: integer
                recipient:
                  type: string
                  description: Recipient id; defaults to the default recipient.
      responses:
        '200':
          description: The created transfer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transfer'
        '401':
          $ref: '#/components/responses/Unauthorized'
    get:
      operationId: listTransfers
      tags: [Transfers]
      summary: List transfers
      responses:
        '200':
          description: A list of transfers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /transfers/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getTransfer
      tags: [Transfers]
      summary: Retrieve a transfer
      responses:
        '200':
          description: The requested transfer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transfer'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateTransfer
      tags: [Transfers]
      summary: Update a transfer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: integer
      responses:
        '200':
          description: The updated transfer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transfer'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteTransfer
      tags: [Transfers]
      summary: Delete a transfer
      responses:
        '200':
          description: Deletion confirmation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Deleted'
        '404':
          $ref: '#/components/responses/NotFound'
  /recipients:
    post:
      operationId: createRecipient
      tags: [Recipients]
      summary: Create a recipient
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipientInput'
      responses:
        '200':
          description: The created recipient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipient'
        '401':
          $ref: '#/components/responses/Unauthorized'
    get:
      operationId: listRecipients
      tags: [Recipients]
      summary: List recipients
      responses:
        '200':
          description: A list of recipients.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /recipients/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getRecipient
      tags: [Recipients]
      summary: Retrieve a recipient
      responses:
        '200':
          description: The requested recipient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipient'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateRecipient
      tags: [Recipients]
      summary: Update a recipient
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipientInput'
      responses:
        '200':
          description: The updated recipient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipient'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteRecipient
      tags: [Recipients]
      summary: Delete a recipient
      responses:
        '200':
          description: Deletion confirmation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Deleted'
        '404':
          $ref: '#/components/responses/NotFound'
  /recipients/{id}/verify:
    parameters:
      - $ref: '#/components/parameters/Id'
    patch:
      operationId: verifyRecipient
      tags: [Recipients]
      summary: Verify a recipient
      description: Marks a recipient as verified (test mode / where supported).
      responses:
        '200':
          description: The verified recipient.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipient'
        '404':
          $ref: '#/components/responses/NotFound'
  /schedules:
    post:
      operationId: createSchedule
      tags: [Schedules]
      summary: Create a schedule
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleInput'
      responses:
        '200':
          description: The created schedule.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Schedule'
        '401':
          $ref: '#/components/responses/Unauthorized'
    get:
      operationId: listSchedules
      tags: [Schedules]
      summary: List schedules
      responses:
        '200':
          description: A list of schedules.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /schedules/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getSchedule
      tags: [Schedules]
      summary: Retrieve a schedule
      responses:
        '200':
          description: The requested schedule.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Schedule'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteSchedule
      tags: [Schedules]
      summary: Delete a schedule
      responses:
        '200':
          description: Deletion confirmation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Deleted'
        '404':
          $ref: '#/components/responses/NotFound'
  /schedules/{id}/occurrences:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: listScheduleOccurrences
      tags: [Schedules]
      summary: List schedule occurrences
      responses:
        '200':
          description: A list of occurrences generated by the schedule.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '404':
          $ref: '#/components/responses/NotFound'
  /links:
    post:
      operationId: createLink
      tags: [Links]
      summary: Create a payment link
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [amount, currency]
              properties:
                amount:
                  type: integer
                currency:
                  type: string
                title:
                  type: string
                description:
                  type: string
                multiple:
                  type: boolean
                  description: Whether the link can be paid more than once.
      responses:
        '200':
          description: The created link.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '401':
          $ref: '#/components/responses/Unauthorized'
    get:
      operationId: listLinks
      tags: [Links]
      summary: List payment links
      responses:
        '200':
          description: A list of links.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /links/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getLink
      tags: [Links]
      summary: Retrieve a payment link
      responses:
        '200':
          description: The requested link.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '404':
          $ref: '#/components/responses/NotFound'
  /events:
    get:
      operationId: listEvents
      tags: [Events]
      summary: List events
      responses:
        '200':
          description: A list of events.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /events/{id}:
    parameters:
      - $ref: '#/components/parameters/Id'
    get:
      operationId: getEvent
      tags: [Events]
      summary: Retrieve an event
      responses:
        '200':
          description: The requested event.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
        '404':
          $ref: '#/components/responses/NotFound'
  /account:
    get:
      operationId: getAccount
      tags: [Account]
      summary: Retrieve the account
      responses:
        '200':
          description: The account object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /balance:
    get:
      operationId: getBalance
      tags: [Account]
      summary: Retrieve the balance
      responses:
        '200':
          description: The balance object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Balance'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  securitySchemes:
    secretKeyAuth:
      type: http
      scheme: basic
      description: >-
        HTTP Basic auth against https://api.omise.co. The secret key
        (skey_test_... or skey_... ) is the username; the password is left
        empty.
    publicKeyAuth:
      type: http
      scheme: basic
      description: >-
        HTTP Basic auth against https://vault.omise.co for tokenization and for
        creating sources. The public key (pkey_test_... or pkey_... ) is the
        username; the password is left empty.
  parameters:
    Id:
      name: id
      in: path
      required: true
      description: The object identifier.
      schema:
        type: string
    OmiseVersion:
      name: Omise-Version
      in: header
      required: false
      description: Pins the API version used for the request (for example 2019-05-29).
      schema:
        type: string
    Limit:
      name: limit
      in: query
      required: false
      schema:
        type: integer
        default: 20
        maximum: 100
    Offset:
      name: offset
      in: query
      required: false
      schema:
        type: integer
        default: 0
    Order:
      name: order
      in: query
      required: false
      schema:
        type: string
        enum: [chronological, reverse_chronological]
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The object was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request was invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      properties:
        object:
          type: string
          example: error
        location:
          type: string
        code:
          type: string
          description: For example authentication_failure, not_found, invalid_charge.
        message:
          type: string
    List:
      type: object
      description: Omise paginated list envelope.
      properties:
        object:
          type: string
          example: list
        data:
          type: array
          items:
            type: object
            additionalProperties: true
        limit:
          type: integer
        offset:
          type: integer
        total:
          type: integer
        order:
          type: string
        location:
          type: string
    Deleted:
      type: object
      properties:
        object:
          type: string
        id:
          type: string
        deleted:
          type: boolean
    CardInput:
      type: object
      required: [number, expiration_month, expiration_year]
      properties:
        name:
          type: string
        number:
          type: string
        expiration_month:
          type: integer
        expiration_year:
          type: integer
        security_code:
          type: string
        city:
          type: string
        pos

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/omise/refs/heads/main/openapi/omise-openapi.yml