# NOTE: # エントリーポイントについて、x-pokepay-allow-server-side: true がついているものはサーバーサイドで正しいことが保証されているが # それ以外は存在しないか間違っているので注意 openapi: '3.0.1' info: description: >- Partner APIs title: Partner APIs version: 0.0.0 tags: - name: Transaction - name: Check description: | 店舗ユーザが発行し、エンドユーザーがポケペイアプリから読み取ることでチャージ取引が発生するQRコードです。 チャージQRコードを解析すると次のようなURLになります(URLは環境によって異なります)。 `https://www-sandbox.pokepay.jp/checks/xxxxxxxx-xxxx-xxxxxxxxx-xxxxxxxxxxxx` QRコードを読み取る方法以外にも、このURLリンクを直接スマートフォン(iOS/Android)上で開くことによりアプリが起動して取引が行われます。(注意: 上記URLはsandbox環境であるため、アプリもsandbox環境のものである必要があります) 上記URL中の `xxxxxxxx-xxxx-xxxxxxxxx-xxxxxxxxxxxx` の部分がチャージQRコードのIDです。 - name: Bill description: 支払いQRコード - name: Cashtray description: | Cashtrayは支払いとチャージ両方に使えるQRコードで、店舗ユーザとエンドユーザーの間の主に店頭などでの取引のために用いられます。 Cashtrayによる取引では、エンドユーザーがQRコードを読み取った時点で即時取引が作られ、ユーザに対して受け取り確認画面は表示されません。 Cashtrayはワンタイムで、一度読み取りに成功するか、取引エラーになると失効します。 また、Cashtrayには有効期限があり、デフォルトでは30分で失効します。 - name: Customer - name: Organization - name: Shop - name: Account - name: Private Money - name: Bulk components: schemas: Pong: x-pokepay-schema-type: "response" properties: pong: type: string pattern: '^ok$' Echo: x-pokepay-schema-type: "response" properties: status: type: string pattern: '^ok$' message: type: string Pagination: x-pokepay-schema-type: "response" properties: current: type: integer per_page: type: integer minimum: 1 max_page: type: integer minimum: 1 has_prev: type: boolean has_next: type: boolean AdminUserWithShopsAndPrivateMoneys: x-pokepay-schema-type: "response" properties: id: type: string format: uuid role: type: string pattern: '^(SERVICE|ORGANIZATION|SHOP)-(MANAGER|STAFF)$' email: type: string format: email name: type: string is_active: type: boolean organization: $ref: '#/components/schemas/Organization' shops: type: array items: $ref: '#/components/schemas/User' private_moneys: type: array items: $ref: '#/components/schemas/PrivateMoney' Account: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: 'ウォレットID' name: type: string title: 'ウォレット名' is_suspended: type: boolean title: 'ウォレットが凍結されているかどうか' private_money: $ref: '#/components/schemas/PrivateMoney' title: '設定マネー情報' AccountWithUser: x-pokepay-schema-type: "response" properties: id: type: string format: uuid name: type: string is_suspended: type: boolean private_money: $ref: '#/components/schemas/PrivateMoney' user: $ref: '#/components/schemas/User' AccountDetail: x-pokepay-schema-type: "response" properties: id: type: string format: uuid name: type: string is_suspended: type: boolean balance: type: number format: decimal money_balance: type: number format: decimal point_balance: type: number format: decimal private_money: $ref: '#/components/schemas/PrivateMoney' ShopAccount: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: 'ウォレットID' name: type: string title: 'ウォレット名' is_suspended: type: boolean title: 'ウォレットが凍結されているかどうか' can_transfer_topup: type: boolean title: 'チャージ可能かどうか' private_money: $ref: '#/components/schemas/PrivateMoney' title: '設定マネー情報' AccountBalance: x-pokepay-schema-type: "response" properties: expires_at: type: string format: date-time money_amount: type: number format: decimal point_amount: type: number format: decimal Bill: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: 支払いQRコードのID amount: type: number format: decimal nullable: true title: 支払い額 description: 支払い額。支払い額未指定の場合は支払い時に任意金額を入力できます。 max_amount: type: number format: decimal nullable: true title: 支払い額を範囲指定した場合の上限 description: 支払い額に任意金額を入力する際の上限です。 min_amount: type: number format: decimal nullable: true title: 支払い額を範囲指定した場合の下限 description: 支払い額に任意金額を入力する際の下限です。 description: type: string title: 支払いQRコードの説明文(アプリ上で取引の説明文として表示される) account: $ref: '#/components/schemas/AccountWithUser' title: 支払いQRコード発行ウォレット description: 支払いQRコードを発行した店舗のウォレットです。ユーザやマネーの情報を含みます。 is_disabled: type: boolean title: 無効化されているかどうか token: type: string title: 支払いQRコードを解析したときに出てくるURL Check: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: チャージQRコードのID amount: type: number format: decimal deprecated: true title: チャージマネー額 money_amount: type: number format: decimal title: チャージマネー額 point_amount: type: number format: decimal title: チャージポイント額 description: type: string title: チャージQRコードの説明文(アプリ上で取引の説明文として表示される) user: $ref: '#/components/schemas/User' title: 送金元ユーザ情報 is_onetime: type: boolean title: 使用回数が一回限りかどうか is_disabled: type: boolean title: 無効化されているかどうか expires_at: type: string format: date-time title: チャージQRコード自体の失効日時 private_money: $ref: '#/components/schemas/PrivateMoney' title: 対象マネー情報 usage_limit: type: integer title: 一回限りでない場合の最大読み取り回数 usage_count: type: number title: 一回限りでない場合の現在までに読み取られた回数 token: type: string title: チャージQRコードを解析したときに出てくるURL Cashtray: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: Cashtray自体のIDです。 amount: type: number format: decimal title: 取引金額 description: Cashtrayの取引金額です。正の数ならチャージ、負の数なら支払いとなります。 description: type: string title: Cashtrayの説明文 description: Cashtrayの説明文です。アプリ上で取引の説明文として表示されます。 account: $ref: '#/components/schemas/AccountWithUser' title: 発行店舗のウォレット description: Cashtrayを発行した店舗ユーザーのウォレット情報です。ユーザやマネーの情報を含みます。 expires_at: type: string format: date-time title: Cashtrayの失効日時 canceled_at: type: string format: date-time nullable: true title: Cashtrayの無効化日時。NULLの場合は無効化されていません token: type: string title: CashtrayのQRコードを解析したときに出てくるURL CashtrayWithResult: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: CashtrayのID description: Cashtray自体のIDです。 amount: type: number format: decimal title: 取引金額 description: Cashtrayの取引金額です。正の数ならチャージ、負の数なら支払いとなります。 description: type: string title: Cashtrayの説明文(アプリ上で取引の説明文として表示される) account: $ref: '#/components/schemas/AccountWithUser' title: 発行店舗のウォレット description: Cashtrayを発行した店舗ユーザーのウォレット情報です。ユーザやマネーの情報を含みます。 expires_at: type: string format: date-time title: Cashtrayの失効日時 canceled_at: type: string format: date-time nullable: true title: Cashtrayの無効化日時。NULLの場合は無効化されていません token: type: string title: CashtrayのQRコードを解析したときに出てくるURL attempt: $ref: '#/components/schemas/CashtrayAttempt' title: Cashtray読み取り結果 description: Cashtrayをエンドユーザーが読み取った結果です。Cashtrayがまだ誰にも読み取られていない場合はNULLになります。 nullable: true transaction: $ref: '#/components/schemas/Transaction' title: 取引結果 description: Cashtrayをエンドユーザーが読み取った結果としてできた取引です。Cashtrayがまだ誰にも読み取られていない場合、またはエラーにより取引が完了しなかった場合はNULLになります。 nullable: true CashtrayAttempt: x-pokepay-schema-type: "response" properties: account: $ref: '#/components/schemas/AccountWithUser' title: エンドユーザーのウォレット description: |- Cashtrayを読み取ったエンドユーザーのウォレット情報です。ユーザやマネーの情報を含みます。 この際、エンドユーザーがCashtrayを発行した店舗ウォレットのマネーを持っていない場合、この値はNULLになります。 nullable: true status_code: type: number title: ステータスコード description: エンドユーザーによるCashtrayの読み取りリクエストに対するレスポンスのHTTPステータスコードです。 error_type: type: string title: エラー型 description: 取引中に発生したエラーの型名です。エラーが発生しなかった場合は空文字となります。 error_message: type: string title: エラーメッセージ description: 取引中に発生したエラーの説明文です。エラーが発生しなかった場合は空文字となります。 created_at: type: string format: date-time title: Cashtray読み取り記録の作成日時 description: エンドユーザーによるCashtrayの読み取りリクエストに対する記録(CashtrayAttempt)の作成日時です。これによりエンドユーザーがCashtrayをいつ読み取ったかが分かります。 User: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: 'ユーザー (または店舗) ID' name: type: string title: 'ユーザー (または店舗) 名' is_merchant: type: boolean title: '店舗ユーザーかどうか' PrivateMoney: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: 'マネーID' name: type: string maxLength: 256 title: 'マネー名' unit: type: string title: 'マネー単位 (例: 円)' is_exclusive: type: boolean title: '会員制のマネーかどうか' description: type: string title: 'マネー説明文' oneline_message: type: string title: 'マネーの要約' organization: title: 'マネーを発行した組織' $ref: '#/components/schemas/Organization' max_balance: type: number format: decimal title: 'ウォレットの上限金額' transfer_limit: type: number format: decimal title: 'マネーの取引上限額' type: type: string enum: [own, third-party] title: 'マネー種別 (自家型=own, 第三者型=third-party)' expiration_type: type: string enum: [static, last-update, last-topup-update] title: '有効期限種別 (チャージ日起算=static, 最終利用日起算=last-update, 最終チャージ日起算=last-topup-update)' enable_topup_by_member: type: boolean nullable: true title: '加盟店によるチャージが有効かどうか' Organization: x-pokepay-schema-type: "response" properties: code: type: string maxLength: 32 title: '組織コード' name: type: string maxLength: 256 title: '組織名' Transaction: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: '取引ID' type: type: string title: '取引種別 (チャージ=topup, 支払い=payment)' is_modified: type: boolean title: '返金された取引かどうか' sender: $ref: '#/components/schemas/User' title: '送金者情報' sender_account: $ref: '#/components/schemas/Account' title: '送金ウォレット情報' receiver: $ref: '#/components/schemas/User' title: '受取者情報' receiver_account: $ref: '#/components/schemas/Account' title: '受取ウォレット情報' amount: type: number title: '決済総額 (マネー額 + ポイント額)' money_amount: type: number title: '決済マネー額' point_amount: type: number title: '決済ポイント額' done_at: type: string format: date-time title: '取引日時' description: type: string title: '取引説明文' ShopWithMetadata: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: 店舗ID name: type: string title: 店舗名 organization_code: type: string maxLength: 256 title: 組織コード postal_code: type: string nullable: true title: '店舗の郵便番号' address: type: string nullable: true title: '店舗の住所' tel: type: string nullable: true title: '店舗の電話番号' email: type: string nullable: true format: email maxLength: 256 title: '店舗のメールアドレス' external_id: type: string nullable: true maxLength: 36 title: '店舗の外部ID' ShopWithAccounts: x-pokepay-schema-type: "response" properties: id: type: string format: uuid title: 店舗ID name: type: string title: 店舗名 organization_code: type: string maxLength: 256 title: 組織コード postal_code: type: string nullable: true title: '店舗の郵便番号' address: type: string nullable: true title: '店舗の住所' tel: type: string nullable: true title: '店舗の電話番号' email: type: string nullable: true format: email maxLength: 256 title: '店舗のメールアドレス' external_id: type: string nullable: true maxLength: 36 title: '店舗の外部ID' accounts: type: array items: $ref: '#/components/schemas/ShopAccount' UserTransaction: x-pokepay-schema-type: "response" properties: id: type: string format: uuid user: $ref: '#/components/schemas/User' balance: type: number format: decimal amount: type: number format: decimal minimum: 0 money_amount: type: number format: decimal minimum: 0 point_amount: type: number format: decimal minimum: 0 account: $ref: '#/components/schemas/Account' description: type: string done_at: type: string format: date-time type: type: string enum: [topup, payment, transfer, exchange] is_modified: type: boolean BulkTransaction: x-pokepay-schema-type: "response" properties: id: type: string format: uuid request_id: type: string title: リクエストID name: type: string title: バルク取引管理用の名前 description: type: string title: バルク取引管理用の説明文 status: type: string enum: - submitted - examining - queued - processing - error - done title: バルク取引の状態 error: type: string nullable: true title: バルク取引のエラー種別 error_lineno: type: integer nullable: true title: バルク取引のエラーが発生した行番号 submitted_at: type: string format: date-time title: バルク取引が登録された日時 updated_at: type: string format: date-time title: バルク取引が更新された日時 AccountWithoutPrivateMoneyDetail: x-pokepay-schema-type: "response" properties: id: type: string format: uuid name: type: string is_suspended: type: boolean private_money_id: type: string format: uuid user: $ref: '#/components/schemas/User' Transfer: x-pokepay-schema-type: "response" properties: id: type: string format: uuid sender_account: $ref: '#/components/schemas/AccountWithoutPrivateMoneyDetail' receiver_account: $ref: '#/components/schemas/AccountWithoutPrivateMoneyDetail' amount: type: number format: decimal minimum: 0 money_amount: type: number format: decimal minimum: 0 point_amount: type: number format: decimal minimum: 0 done_at: type: string format: date-time type: type: string enum: [topup, payment, refund-topup, refund-payment, transfer, exchange-inflow, exchange-outflow, campaign-topup, refund-campaign, use-coupon, refund-coupon] description: type: string transaction_id: type: string format: uuid OrganizationSummary: x-pokepay-schema-type: "response" properties: count: type: integer money_amount: type: number format: decimal minimum: 0 money_count: type: integer point_amount: type: number format: decimal minimum: 0 point_count: type: integer PrivateMoneyOrganizationSummary: x-pokepay-schema-type: "response" properties: organization_code: type: string pattern: '^[a-zA-Z0-9-]*$' maxLength: 32 topup: $ref: '#/components/schemas/OrganizationSummary' payment: $ref: '#/components/schemas/OrganizationSummary' PaginatedPrivateMoneyOrganizationSummaries: x-pokepay-schema-type: "response" properties: rows: type: array items: $ref: '#/components/schemas/PrivateMoneyOrganizationSummary' count: type: integer minimum: 0 pagination: $ref: '#/components/schemas/Pagination' PaginatedTransaction: x-pokepay-schema-type: "response" properties: rows: type: array items: $ref: '#/components/schemas/Transaction' count: type: integer minimum: 0 pagination: $ref: '#/components/schemas/Pagination' PaginatedTransfers: x-pokepay-schema-type: "response" properties: rows: type: array items: $ref: '#/components/schemas/Transfer' count: type: integer minimum: 0 pagination: $ref: '#/components/schemas/Pagination' PaginatedAccounts: x-pokepay-schema-type: "response" properties: rows: type: array items: $ref: '#/components/schemas/Account' count: type: integer minimum: 0 pagination: $ref: '#/components/schemas/Pagination' PaginatedAccountWithUsers: x-pokepay-schema-type: "response" properties: rows: type: array items: $ref: '#/components/schemas/AccountWithUser' count: type: integer minimum: 0 pagination: $ref: '#/components/schemas/Pagination' PaginatedAccountBalance: x-pokepay-schema-type: "response" properties: rows: type: array items: $ref: '#/components/schemas/AccountBalance' count: type: integer minimum: 0 pagination: $ref: '#/components/schemas/Pagination' PaginatedShops: x-pokepay-schema-type: "response" properties: rows: type: array items: $ref: '#/components/schemas/ShopWithMetadata' count: type: integer minimum: 0 pagination: $ref: '#/components/schemas/Pagination' PaginatedBills: x-pokepay-schema-type: "response" properties: rows: type: array items: $ref: '#/components/schemas/Bill' count: type: integer minimum: 0 pagination: $ref: '#/components/schemas/Pagination' PaginatedPrivateMoneys: x-pokepay-schema-type: "response" properties: rows: type: array items: $ref: '#/components/schemas/PrivateMoney' count: type: integer minimum: 0 pagination: $ref: '#/components/schemas/Pagination' BadRequest: x-pokepay-schema-type: "response" oneOf: - $ref: '#/components/schemas/PartnerClientNotFound' - $ref: '#/components/schemas/PartnerDecryptionFailed' - $ref: '#/components/schemas/PartnerRequestExpired' - $ref: '#/components/schemas/PartnerRequestAlreadyDone' - $ref: '#/components/schemas/InvalidParameters' PartnerClientNotFound: x-pokepay-schema-type: "response" properties: type: type: string pattern: '^partner_client_not_found$' message: type: string PartnerDecryptionFailed: x-pokepay-schema-type: "response" properties: type: type: string pattern: '^partner_decryption_failed$' message: type: string PartnerRequestExpired: x-pokepay-schema-type: "response" properties: type: type: string pattern: '^partner_request_expired$' message: type: string example: 'This request is expired.' PartnerRequestAlreadyDone: x-pokepay-schema-type: "response" properties: type: type: string pattern: '^partner_request_already_done$' message: type: string InvalidParameters: x-pokepay-schema-type: "response" properties: type: type: string pattern: '^invalid_parameter' message: type: string errors: type: object properties: missing: type: array nullable: true items: type: string invalid: type: array nullable: true items: type: string unpermitted: type: array nullable: true items: type: string Forbidden: properties: type: type: string example: forbidden message: type: string example: Forbidden NotFound: properties: type: type: string example: api_error message: type: string example: Not Found UnprocessableEntity: properties: type: type: string example: unprocessable message: type: string Conflict: properties: type: type: string message: type: string responses: BadRequest: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/BadRequest' InvalidParameters: description: Invalid Parameters content: application/json: schema: $ref: '#/components/schemas/InvalidParameters' Forbidden: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Forbidden' NotFound: description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFound' UnprocessableEntity: description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntity' Conflict: description: Conflict content: application/json: schema: $ref: '#/components/schemas/Conflict' paths: /ping: get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Pong' /echo: post: x-pokepay-operator-name: "SendEcho" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["message"] properties: message: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Echo' '400': $ref: '#/components/responses/BadRequest' /user: get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdminUserWithShopsAndPrivateMoneys' /users/{user_id}/accounts: get: tags: - Account summary: 'エンドユーザー、店舗ユーザーのウォレット一覧を表示する' description: ユーザーIDを指定してそのユーザーのウォレット一覧を取得します。 x-pokepay-operator-name: "ListUserAccounts" x-pokepay-allow-server-side: true parameters: - in: path name: user_id required: true schema: type: string format: uuid title: 'ユーザーID' description: |- ユーザーIDです。 指定したユーザーIDのウォレット一覧を取得します。パートナーキーと紐づく組織が発行しているマネーのウォレットのみが表示されます。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedAccounts' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /accounts/{account_id}: get: tags: - Customer summary: 'ウォレット情報を表示する' description: ウォレットを取得します。 x-pokepay-operator-name: "GetAccount" x-pokepay-allow-server-side: true parameters: - in: path name: account_id required: true schema: type: string format: uuid title: 'ウォレットID' description: |- ウォレットIDです。 フィルターとして使われ、指定したウォレットIDのウォレットを取得します。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccountDetail' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' patch: tags: - Customer summary: 'ウォレット情報を更新する' description: ウォレットの状態を更新します。現在はウォレットの凍結/凍結解除の切り替えにのみ対応しています。 x-pokepay-operator-name: "UpdateAccount" x-pokepay-allow-server-side: true parameters: - in: path name: account_id required: true schema: type: string format: uuid title: 'ウォレットID' description: |- ウォレットIDです。 指定したウォレットIDのウォレットの状態を更新します。 requestBody: required: true content: application/json: schema: properties: is_suspended: type: boolean title: 'ウォレットが凍結されているかどうか' description: ウォレットの凍結状態です。真にするとウォレットが凍結され、そのウォレットでは新規取引ができなくなります。偽にすると凍結解除されます。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccountDetail' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /accounts/{account_id}/balances: get: tags: - Customer summary: 'エンドユーザーの残高内訳を表示する' description: エンドユーザーのウォレット毎の残高を有効期限別のリストとして取得します。 x-pokepay-operator-name: "ListAccountBalances" x-pokepay-allow-server-side: true parameters: - name: account_id in: path required: true schema: type: string format: uuid title: 'ウォレットID' description: |- ウォレットIDです。 フィルターとして使われ、指定したウォレットIDのウォレット残高を取得します。 requestBody: required: true content: application/json: schema: properties: page: type: integer minimum: 1 title: 'ページ番号' description: 取得したいページ番号です。デフォルト値は1です。 per_page: type: integer minimum: 1 title: '1ページ分の取引数' description: 1ページ分のウォレット残高数です。デフォルト値は30です。 expires_at_from: type: string format: date-time title: '有効期限の期間によるフィルター(開始時点)' description: 有効期限の期間によるフィルターの開始時点のタイムスタンプです。デフォルトでは未指定です。 expires_at_to: type: string format: date-time title: '有効期限の期間によるフィルター(終了時点)' description: 有効期限の期間によるフィルターの終了時点のタイムスタンプです。デフォルトでは未指定です。 direction: type: string enum: [asc, desc] title: '有効期限によるソート順序' description: 有効期限によるソートの順序を指定します。デフォルト値はasc (昇順)です。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedAccountBalance' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /accounts/{account_id}/expired-balances: get: tags: - Customer summary: 'エンドユーザーの失効済みの残高内訳を表示する' description: エンドユーザーのウォレット毎の失効済みの残高を有効期限別のリストとして取得します。 x-pokepay-operator-name: "ListAccountExpiredBalances" x-pokepay-allow-server-side: true parameters: - name: account_id in: path required: true schema: type: string format: uuid title: 'ウォレットID' description: |- ウォレットIDです。 フィルターとして使われ、指定したウォレットIDのウォレット残高を取得します。 requestBody: required: true content: application/json: schema: properties: page: type: integer minimum: 1 title: 'ページ番号' description: 取得したいページ番号です。デフォルト値は1です。 per_page: type: integer minimum: 1 title: '1ページ分の取引数' description: 1ページ分のウォレット残高数です。デフォルト値は30です。 expires_at_from: type: string format: date-time title: '有効期限の期間によるフィルター(開始時点)' description: 有効期限の期間によるフィルターの開始時点のタイムスタンプです。デフォルトでは未指定です。 expires_at_to: type: string format: date-time title: '有効期限の期間によるフィルター(終了時点)' description: 有効期限の期間によるフィルターの終了時点のタイムスタンプです。デフォルトでは未指定です。 direction: type: string enum: [asc, desc] title: '有効期限によるソート順序' description: 有効期限によるソートの順序を指定します。デフォルト値はdesc (降順)です。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedAccountBalance' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /accounts/customers: get: tags: - Customer summary: 'エンドユーザーのウォレット一覧を表示する' description: マネーを指定してエンドユーザーのウォレット一覧を取得します。 x-pokepay-operator-name: "GetCustomerAccounts" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["private_money_id"] properties: private_money_id: title: 'マネーID' description: |- マネーIDです。 一覧するウォレットのマネーを指定します。このパラメータは必須です。 type: string format: uuid page: type: integer minimum: 1 title: 'ページ番号' description: 取得したいページ番号です。デフォルト値は1です。 per_page: type: integer minimum: 1 title: '1ページ分のウォレット数' description: 1ページ分のウォレット数です。デフォルト値は30です。 created_at_from: type: string format: date-time title: 'ウォレット作成日によるフィルター(開始時点)' description: ウォレット作成日によるフィルターの開始時点のタイムスタンプです。デフォルトでは未指定です。 created_at_to: type: string format: date-time title: 'ウォレット作成日によるフィルター(終了時点)' description: ウォレット作成日によるフィルターの終了時点のタイムスタンプです。デフォルトでは未指定です。 is_suspended: type: boolean title: 'ウォレットが凍結状態かどうかでフィルターする' description: このパラメータが指定されている場合、ウォレットの凍結状態で結果がフィルターされます。デフォルトでは未指定です。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedAccountWithUsers' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' post: tags: - Customer summary: '新規エンドユーザーウォレットを追加する' description: |- 指定したマネーのウォレットを作成し、同時にそのウォレットを保有するユーザも作成します。 x-pokepay-operator-name: "CreateCustomerAccount" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["private_money_id"] properties: private_money_id: title: 'マネーID' description: |- マネーIDです。 これによって作成するウォレットのマネーを指定します。 type: string format: uuid user_name: title: 'ユーザー名' description: |- ウォレットと共に作成するユーザ名です。省略した場合は空文字となります。 type: string maxLength: 256 example: ポケペイ太郎 account_name: title: 'アカウント名' description: |- 作成するウォレット名です。省略した場合は空文字となります。 type: string maxLength: 256 example: ポケペイ太郎のアカウント responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccountWithUser' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /accounts/shops: get: tags: - Customer summary: '店舗ユーザーのウォレット一覧を表示する' description: マネーを指定して店舗ユーザーのウォレット一覧を取得します。 x-pokepay-operator-name: "GetShopAccounts" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["private_money_id"] properties: private_money_id: title: 'マネーID' description: |- マネーIDです。 一覧するウォレットのマネーを指定します。このパラメータは必須です。 type: string format: uuid page: type: integer minimum: 1 title: 'ページ番号' description: 取得したいページ番号です。デフォルト値は1です。 per_page: type: integer minimum: 1 title: '1ページ分のウォレット数' description: 1ページ分のウォレット数です。デフォルト値は30です。 created_at_from: type: string format: date-time title: 'ウォレット作成日によるフィルター(開始時点)' description: ウォレット作成日によるフィルターの開始時点のタイムスタンプです。デフォルトでは未指定です。 created_at_to: type: string format: date-time title: 'ウォレット作成日によるフィルター(終了時点)' description: ウォレット作成日によるフィルターの終了時点のタイムスタンプです。デフォルトでは未指定です。 is_suspended: type: boolean title: 'ウォレットが凍結状態かどうかでフィルターする' description: このパラメータが指定されている場合、ウォレットの凍結状態で結果がフィルターされます。デフォルトでは未指定です。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedAccountWithUsers' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /bills: get: tags: - Bill summary: '支払いQRコード一覧を表示する' description: 支払いQRコード一覧を表示します。 x-pokepay-operator-name: "ListBills" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: properties: page: type: integer minimum: 1 title: 'ページ番号' description: 取得したいページ番号です。 per_page: type: integer minimum: 1 title: '1ページの表示数' description: 1ページに表示する支払いQRコードの数です。 bill_id: type: string title: '支払いQRコードのID' description: 支払いQRコードのIDを指定して検索します。IDは前方一致で検索されます。 private_money_id: type: string format: uuid title: 'マネーID' description: 支払いQRコードの送金元ウォレットのマネーIDでフィルターします。 organization_code: type: string pattern: '^[a-zA-Z0-9-]*$' maxLength: 32 title: '組織コード' description: 支払いQRコードの送金元店舗が所属する組織の組織コードでフィルターします。 description: type: string maxLength: 200 title: '取引説明文' description: 支払いQRコードを読み取ることで作られた取引の説明文としてアプリなどに表示されます。 example: 'test bill' created_from: type: string format: date-time title: '作成日時(起点)' description: |- 支払いQRコードの作成日時でフィルターします。 これ以降に作成された支払いQRコードのみ一覧に表示されます。 created_to: type: string format: date-time title: '作成日時(終点)' description: |- 支払いQRコードの作成日時でフィルターします。 これ以前に作成された支払いQRコードのみ一覧に表示されます。 shop_name: type: string maxLength: 256 title: '店舗名' description: 支払いQRコードを作成した店舗名でフィルターします。店舗名は部分一致で検索されます。 example: 'bill test shop1' shop_id: type: string format: uuid title: '店舗ID' description: 支払いQRコードを作成した店舗IDでフィルターします。 lower_limit_amount: type: integer minimum: 0 format: decimal title: '金額の範囲によるフィルタ(下限)' description: 支払いQRコードの金額の下限を指定してフィルターします。 upper_limit_amount: type: integer minimum: 0 format: decimal title: '金額の範囲によるフィルタ(上限)' description: 支払いQRコードの金額の上限を指定してフィルターします。 is_disabled: type: boolean title: '支払いQRコードが無効化されているかどうか' description: 支払いQRコードが無効化されているかどうかを表します。デフォルト値は偽(有効)です。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedBills' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' post: tags: - Bill summary: '支払いQRコードの発行' description: 支払いQRコードの内容を更新します。支払い先の店舗ユーザーは指定したマネーのウォレットを持っている必要があります。 x-pokepay-operator-name: "CreateBill" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["private_money_id", "shop_id"] properties: amount: type: number minimum: 0 nullable: true format: decimal title: '支払い額' description: 支払いQRコードを支払い額を指定します。省略するかnullを渡すと任意金額の支払いQRコードとなり、エンドユーザーがアプリで読み取った際に金額を入力します。 private_money_id: type: string format: uuid title: '支払いマネーのマネーID' shop_id: type: string format: uuid title: '支払い先(受け取り人)の店舗ID' description: type: string maxLength: 200 title: '説明文(アプリ上で取引の説明文として表示される)' example: 'test bill' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Bill' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /bills/{bill_id}: patch: tags: - Bill summary: '支払いQRコードの更新' description: 支払いQRコードの内容を更新します。パラメータは全て省略可能で、指定したもののみ更新されます。 x-pokepay-operator-name: "UpdateBill" x-pokepay-allow-server-side: true parameters: - in: path name: bill_id required: true schema: type: string format: uuid title: '支払いQRコードのID' description: |- 更新対象の支払いQRコードのIDです。 requestBody: required: true content: application/json: schema: properties: amount: type: number minimum: 0 nullable: true format: decimal title: '支払い額' description: 支払いQRコードを支払い額を指定します。nullを渡すと任意金額の支払いQRコードとなり、エンドユーザーがアプリで読み取った際に金額を入力します。 description: type: string maxLength: 200 title: '説明文' description: 支払いQRコードの詳細説明文です。アプリ上で取引の説明文として表示されます。 example: 'test bill' is_disabled: type: boolean title: '無効化されているかどうか' description: 支払いQRコードが無効化されているかどうかを指定します。真にすると無効化され、偽にすると有効化します。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Bill' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /checks: post: tags: - Check summary: 'チャージQRコードの発行' x-pokepay-operator-name: "CreateCheck" requestBody: required: true content: application/json: schema: required: ["account_id"] x-pokepay-conditional-parameters: {or: [money_amount, point_amount]} properties: money_amount: type: number minimum: 0 format: decimal title: '付与マネー額' point_amount: type: number minimum: 0 format: decimal title: '付与ポイント額' account_id: type: string format: uuid title: '送金元の店舗アカウントID' description: type: string maxLength: 200 title: '説明文(アプリ上で取引の説明文として表示される)' example: 'test check' is_onetime: type: boolean title: 'ワンタイムかどうか。真の場合1度読み込まれた時点でそのチャージQRは失効する(デフォルト値は真)' description: | チャージQRコードが一度の読み取りで失効するときに`true`にします。デフォルト値は`true`です。 `false`の場合、そのチャージQRコードは1ユーザについては1回きりですが、複数ユーザによって読み取り可能なQRコードになります。 usage_limit: type: integer nullable: true title: 'ワンタイムでない場合、複数ユーザから読み取られ得る。その場合の最大読み取り回数' description: | 複数ユーザによって読み取り可能なチャージQRコードの読み取り回数に制限をつけるために指定します。 省略すると無制限に読み取り可能なチャージQRコードになります。 チャージQRコードは管理画面からいつでも無効化(有効化)することができます。 expires_at: type: string format: date-time title: 'チャージQR自体の失効日時' point_expires_at: type: string format: date-time title: 'チャージQRによって付与されるポイントの失効日時' point_expires_in_days: type: integer minimum: 1 title: 'チャージQRによって付与されるポイントの有効期限(相対指定、単位は日)' example: 60 bear_point_account: type: string format: uuid title: 'ポイント額を負担する店舗アカウントのID' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Check' '400': $ref: '#/components/responses/InvalidParameters' /transactions: get: tags: - Transaction summary: '取引履歴を取得する' description: 取引一覧を返します。 x-pokepay-operator-name: "ListTransactions" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: properties: from: type: string format: date-time title: '開始日時' description: |- 抽出期間の開始日時です。 フィルターとして使われ、開始日時以降に発生した取引のみ一覧に表示されます。 to: type: string format: date-time title: '終了日時' description: |- 抽出期間の終了日時です。 フィルターとして使われ、終了日時以前に発生した取引のみ一覧に表示されます。 page: type: integer minimum: 1 title: 'ページ番号' description: 取得したいページ番号です。 example: 1 per_page: type: integer minimum: 1 title: '1ページ分の取引数' description: 1ページ分の取引数です。 example: 50 shop_id: type: string format: uuid title: '店舗ID' description: |- 店舗IDです。 フィルターとして使われ、指定された店舗での取引のみ一覧に表示されます。 customer_id: type: string format: uuid title: 'エンドユーザーID' description: |- エンドユーザーIDです。 フィルターとして使われ、指定されたエンドユーザーでの取引のみ一覧に表示されます。 customer_name: type: string maxLength: 256 title: 'エンドユーザー名' description: |- エンドユーザー名です。 フィルターとして使われ、入力された名前に部分一致するエンドユーザーでの取引のみ一覧に表示されます。 example: 太郎 terminal_id: type: string format: uuid title: '端末ID' description: |- 端末IDです。 フィルターとして使われ、指定された端末での取引のみ一覧に表示されます。 transaction_id: type: string format: uuid title: '取引ID' description: |- 取引IDです。 フィルターとして使われ、指定された取引のみ一覧に表示されます。 organization_code: type: string pattern: '^[a-zA-Z0-9-]*$' maxLength: 32 title: '組織コード' description: |- 組織コードです。 フィルターとして使われ、指定された組織での取引のみ一覧に表示されます。 example: 'pocketchange' private_money_id: type: string format: uuid title: 'マネーID' description: |- マネーIDです。 フィルターとして使われ、指定したマネーでの取引のみ一覧に表示されます。 is_modified: type: boolean title: 'キャンセルフラグ' description: |- キャンセルフラグです。 これにtrueを指定するとキャンセルされた取引のみ一覧に表示されます。 デフォルト値はfalseで、キャンセルの有無にかかわらず一覧に表示されます。 types: type: array title: '取引種別 (複数指定可)、チャージ=topup、支払い=payment' example: '["topup", "payment"]' description: |- 取引の種類でフィルターします。 以下の種類を指定できます。 1. topup 店舗からエンドユーザーへの送金取引(チャージ) 2. payment エンドユーザーから店舗への送金取引(支払い) 3. exchange-outflow   他マネーへの流出 4. exchange-inflow 他マネーからの流入 items: type: string enum: [topup, payment, exchange_outflow, exchange_inflow] description: type: string maxLength: 200 title: '取引説明文' description: |- 取引を指定の取引説明文でフィルターします。 取引説明文が完全一致する取引のみ抽出されます。取引説明文は最大200文字で記録されています。 example: 店頭QRコードによる支払い responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedTransaction' '400': $ref: '#/components/responses/InvalidParameters' post: tags: - Transaction summary: 'チャージする(廃止予定)' description: |- チャージ取引を作成します。このAPIは廃止予定です。以降は `CreateTopupTransaction` を使用してください。 x-pokepay-operator-name: "CreateTransaction" x-pokepay-allow-server-side: true deprecated: true requestBody: required: true content: application/json: schema: required: ["private_money_id", "shop_id", "customer_id"] properties: shop_id: type: string format: uuid customer_id: type: string format: uuid private_money_id: type: string format: uuid money_amount: type: integer format: decimal minimum: 0 point_amount: type: integer format: decimal minimum: 0 point_expires_at: type: string format: date-time title: 'ポイント有効期限' description: |- ポイントをチャージした場合の、付与されるポイントの有効期限です。 省略した場合はマネーに設定された有効期限と同じものがポイントの有効期限となります。 description: type: string maxLength: 200 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Transaction' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /transactions/topup: post: tags: - Transaction summary: 'チャージする' description: チャージ取引を作成します。 x-pokepay-operator-name: "CreateTopupTransaction" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["private_money_id", "shop_id", "customer_id"] properties: shop_id: type: string format: uuid title: '店舗ID' description: |- 店舗IDです。 送金元の店舗を指定します。 customer_id: type: string format: uuid title: 'エンドユーザーのID' description: |- エンドユーザーIDです。 送金先のエンドユーザーを指定します。 private_money_id: type: string format: uuid title: 'マネーID' description: |- マネーIDです。 マネーを指定します。 bear_point_shop_id: type: string format: uuid title: 'ポイント支払時の負担店舗ID' description: |- ポイント支払時の負担店舗IDです。 ポイント支払い時に実際お金を負担する店舗を指定します。 money_amount: type: number minimum: 0 title: 'マネー額' description: |- マネー額です。 送金するマネー額を指定します。 point_amount: type: number minimum: 0 title: 'ポイント額' description: |- ポイント額です。 送金するポイント額を指定します。 point_expires_at: type: string format: date-time title: 'ポイント有効期限' description: |- ポイントをチャージした場合の、付与されるポイントの有効期限です。 省略した場合はマネーに設定された有効期限と同じものがポイントの有効期限となります。 description: type: string maxLength: 200 title: '取引履歴に表示する説明文' description: |- 取引説明文です。 任意入力で、取引履歴に表示される説明文です。 example: 初夏のチャージキャンペーン responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Transaction' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /transactions/topup/check: post: tags: - Check summary: 'チャージQRコードを読み取ることでチャージする' description: | 通常チャージQRコードはエンドユーザーのアプリによって読み取られ、アプリとポケペイサーバとの直接通信によって取引が作られます。 もしエンドユーザーとの通信をパートナーのサーバのみに限定したい場合、パートナーのサーバがチャージQRの情報をエンドユーザーから代理受けして、サーバ間連携APIによって実際のチャージ取引をリクエストすることになります。 エンドユーザーから受け取ったチャージ用QRコードのIDをエンドユーザーIDと共に渡すことでチャージ取引が作られます。 x-pokepay-operator-name: "CreateTopupTransactionWithCheck" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["check_id", "customer_id"] properties: check_id: type: string format: uuid title: 'チャージ用QRコードのID' description: |- チャージ用QRコードのIDです。 QRコード生成時に送金元店舗のウォレット情報や、送金額などが登録されています。 customer_id: type: string format: uuid title: 'エンドユーザーのID' description: |- エンドユーザーIDです。 送金先のエンドユーザーを指定します。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Transaction' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' /transactions/payment: post: tags: - Transaction summary: '支払いする' description: | 支払取引を作成します。 支払い時には、エンドユーザーの残高のうち、ポイント残高から優先的に消費されます。 x-pokepay-operator-name: "CreatePaymentTransaction" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["private_money_id", "shop_id", "customer_id", "amount"] properties: shop_id: type: string format: uuid title: '店舗ID' description: |- 店舗IDです。 送金先の店舗を指定します。 customer_id: type: string format: uuid title: 'エンドユーザーID' description: |- エンドユーザーIDです。 送金元のエンドユーザーを指定します。 private_money_id: type: string format: uuid title: 'マネーID' description: |- マネーIDです。 マネーを指定します。 amount: type: number minimum: 0 title: '支払い額' description: |- マネー額です。 送金するマネー額を指定します。 description: type: string maxLength: 200 title: '取引履歴に表示する説明文' description: |- 取引説明文です。 任意入力で、取引履歴に表示される説明文です。 example: たい焼き(小倉) responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Transaction' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /transactions/transfer: post: tags: - Transaction summary: '個人間送金' description: | エンドユーザー間での送金取引(個人間送金)を作成します。 個人間送金で送れるのはマネーのみで、ポイントを送ることはできません。送金元のマネー残高のうち、有効期限が最も遠いものから順に送金されます。 x-pokepay-operator-name: "CreateTransferTransaction" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["private_money_id", "sender_id", "receiver_id", "amount"] properties: sender_id: type: string format: uuid title: '送金元ユーザーID' description: |- エンドユーザーIDです。 送金元のエンドユーザー(送り主)を指定します。 receiver_id: type: string format: uuid title: '受取ユーザーID' description: |- エンドユーザーIDです。 送金先のエンドユーザー(受け取り人)を指定します。 private_money_id: type: string format: uuid title: 'マネーID' description: |- マネーIDです。 マネーを指定します。 amount: type: number minimum: 0 title: '送金額' description: |- マネー額です。 送金するマネー額を指定します。 description: type: string maxLength: 200 title: '取引履歴に表示する説明文' description: |- 取引説明文です。 任意入力で、取引履歴に表示される説明文です。 example: たい焼き(小倉) responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Transaction' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /transactions/exchange: post: tags: - Transaction x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["user_id", "sender_private_money_id", "receiver_private_money_id", "amount"] properties: user_id: type: string format: uuid sender_private_money_id: type: string format: uuid receiver_private_money_id: type: string format: uuid amount: type: number minimum: 1 description: type: string maxLength: 200 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Transaction' '400': $ref: '#/components/responses/BadRequest' '422': $ref: '#/components/responses/UnprocessableEntity' /transactions/bulk: post: tags: - Bulk summary: CSVファイル一括取引 description: CSVファイルから一括取引をします。 x-pokepay-operator-name: "BulkCreateTransaction" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["name", "content", "request_id"] properties: name: type: string maxLength: 32 title: 一括取引タスク名 description: |- 一括取引タスクの管理用の名前です。 description: type: string maxLength: 128 title: 一括取引の説明 description: |- 一括取引タスクの管理用の説明文です。 content: type: string title: 取引する情報のCSV description: |- 一括取引する情報を書いたCSVの文字列です。 1行目はヘッダ行で、2行目以降の各行にカンマ区切りの取引データを含みます。 カラムは以下の7つです。任意のカラムには空文字を指定します。 - `type`: 取引種別 - 必須。'topup' または 'payment' - `sender_id`: 送金ユーザーID - 必須。UUID - `receiver_id`: 受取ユーザーID - 必須。UUID - `private_money_id`: マネーID - 必須。UUID - `money_amount`: マネー額 - 任意。ただし `point_amount` といずれかが必須。0以上の数字 - `point_amount`: ポイント額 - 任意。ただし `money_amount` といずれかが必須。0以上の数字 - `description`: 取引の説明文 - 任意。200文字以内。取引履歴に表示される文章 - `bear_account_id`: ポイント負担ウォレットID - `point_amount` があるときは必須。UUID - `point_expires_at`: ポイントの有効期限 - 任意。指定がないときはマネーに設定された有効期限を適用 request_id: type: string minLength: 36 maxLength: 36 title: リクエストID description: |- 重複したリクエストを判断するためのユニークID。ランダムな36字の文字列を生成して渡してください。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BulkTransaction' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '409': $ref: '#/components/responses/Conflict' /transactions/{transaction_id}: get: tags: - Transaction summary: '取引情報を取得する' description: 取引を取得します。 x-pokepay-operator-name: "GetTransaction" x-pokepay-allow-server-side: true parameters: - in: path name: transaction_id required: true schema: type: string format: uuid title: '取引ID' description: |- 取引IDです。 フィルターとして使われ、指定した取引IDの取引を取得します。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Transaction' '400': $ref: '#/components/responses/InvalidParameters' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /transactions/{transaction_id}/refund: post: tags: - Transaction summary: '返金する' x-pokepay-operator-name: "RefundTransaction" x-pokepay-allow-server-side: true parameters: - in: path name: transaction_id required: true schema: type: string format: uuid title: '取引ID' requestBody: required: true content: application/json: schema: properties: description: type: string maxLength: 200 title: '取引履歴に表示する返金事由' example: '返品対応のため' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Transaction' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /transfers: get: tags: - Transaction x-pokepay-operator-name: "ListTransfers" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: properties: from: type: string format: date-time to: type: string format: date-time page: type: integer minimum: 1 per_page: type: integer minimum: 1 shop_id: type: string format: uuid shop_name: type: string maxLength: 256 customer_id: type: string format: uuid customer_name: type: string maxLength: 256 transaction_id: type: string format: uuid private_money_id: type: string format: uuid is_modified: type: boolean transaction_types: type: array items: type: string enum: [topup, payment, transfer, exchange] transfer_types: type: array description: |- 取引明細の種類でフィルターします。 以下の種類を指定できます。 1. topup 店舗からエンドユーザーへの送金取引(チャージ)、またはそのキャンセル取引 2. payment エンドユーザーから店舗への送金取引(支払い)、またはそのキャンセル取引 3. exchange 他マネーへの流出/流入 4. campaign 取引に対するポイント還元キャンペーンによるポイント付与、またはそのキャンセル取引 5. coupon クーポンによる値引き処理、またはそのキャンセル取引 items: type: string enum: [topup, payment, exchange, transfer, coupon, campaign] description: type: string maxLength: 200 title: '取引詳細説明文' description: |- 取引詳細を指定の取引詳細説明文でフィルターします。 取引詳細説明文が完全一致する取引のみ抽出されます。取引詳細説明文は最大200文字で記録されています。 example: 店頭QRコードによる支払い responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedTransfers' '400': $ref: '#/components/responses/InvalidParameters' /organizations: post: tags: - Organization summary: '新規加盟店組織を追加する' x-pokepay-operator-name: "CreateOrganization" requestBody: required: true content: application/json: schema: required: ["code", "name", "private_money_ids", "issuer_admin_user_email", "member_admin_user_email"] properties: code: type: string maxLength: 32 title: '新規組織コード' example: ox_supermarket name: type: string maxLength: 256 title: '新規組織名' example: oxスーパー private_money_ids: type: array items: type: string format: uuid minItems: 1 title: '加盟店組織で有効にするマネーIDの配列' issuer_admin_user_email: type: string format: email title: '発行体担当者メールアドレス' member_admin_user_email: type: string format: email title: '新規組織担当者メールアドレス' bank_name: type: string maxLength: 64 title: '銀行名' example: XYZ銀行 bank_code: type: string pattern: '^$|^[0-9]{4}$' title: '銀行金融機関コード' example: 99X bank_branch_name: type: string maxLength: 64 title: '銀行支店名' example: ABC支店 bank_branch_code: type: string pattern: '^(|[0-9]{3})$' title: '銀行支店コード' example: 99X bank_account_type: type: string enum: [saving, current, other] title: '銀行口座種別 (普通=saving, 当座=current, その他=other)' bank_account: type: string maxLength: 7 pattern: '[0-9]{0,7}' title: '銀行口座番号' example: 9999999 bank_account_holder_name: # TODO: flico type: string maxLength: 30 pattern: '^[0-9A-Zヲア-゚ (-),-/\\「-」]$' title: '口座名義人名' example: フクザワユキチ contact_name: type: string maxLength: 256 title: '担当者名' example: 佐藤清 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Organization' /shops: get: tags: - Shop summary: '店舗一覧を取得する' x-pokepay-operator-name: "ListShops" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: properties: organization_code: type: string pattern: '^[a-zA-Z0-9-]*$' maxLength: 32 title: '組織コード' description: | このパラメータを渡すとその組織の店舗のみが返され、省略すると加盟店も含む店舗が返されます。 example: 'pocketchange' private_money_id: type: string format: uuid title: 'マネーID' description: | このパラメータを渡すとそのマネーのウォレットを持つ店舗のみが返されます。 name: type: string minLength: 1 maxLength: 256 title: '店舗名' example: 'oxスーパー三田店' description: | このパラメータを渡すとその名前の店舗のみが返されます。 postal_code: type: string pattern: '^[0-9]{3}-?[0-9]{4}$' title: '店舗の郵便番号' description: | このパラメータを渡すとその郵便番号が登録された店舗のみが返されます。 address: type: string maxLength: 256 title: '店舗の住所' example: '東京都港区芝...' description: | このパラメータを渡すとその住所が登録された店舗のみが返されます。 tel: type: string pattern: '^0[0-9]{1,3}-?[0-9]{2,4}-?[0-9]{3,4}$' title: '店舗の電話番号' description: | このパラメータを渡すとその電話番号が登録された店舗のみが返されます。 email: type: string format: email maxLength: 256 title: '店舗のメールアドレス' description: | このパラメータを渡すとそのメールアドレスが登録された店舗のみが返されます。 external_id: type: string maxLength: 36 title: '店舗の外部ID' description: | このパラメータを渡すとその外部IDが登録された店舗のみが返されます。 page: type: integer minimum: 1 title: 'ページ番号' description: 取得したいページ番号です。 example: 1 per_page: type: integer minimum: 1 title: '1ページ分の取引数' description: 1ページ分の取引数です。 example: 50 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedShops' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' post: tags: - Shop summary: '新規店舗を追加する(廃止予定)' description: |- 新規店舗を追加します。このAPIは廃止予定です。以降は `CreateShopV2` を使用してください。 x-pokepay-operator-name: "CreateShop" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["shop_name"] properties: shop_name: type: string minLength: 1 maxLength: 256 title: '店舗名' example: 'oxスーパー三田店' shop_postal_code: type: string pattern: '^[0-9]{3}-?[0-9]{4}$' title: '店舗の郵便番号' shop_address: type: string maxLength: 256 title: '店舗の住所' example: '東京都港区芝...' shop_tel: type: string pattern: '^0[0-9]{1,3}-?[0-9]{2,4}-?[0-9]{3,4}$' title: '店舗の電話番号' shop_email: type: string format: email maxLength: 256 title: '店舗のメールアドレス' shop_external_id: type: string maxLength: 36 title: '店舗の外部ID' organization_code: type: string pattern: '^[a-zA-Z0-9-]*$' maxLength: 32 title: '組織コード' example: 'ox-supermarket' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/User' '400': $ref: '#/components/responses/InvalidParameters' '403': $ref: '#/components/responses/Forbidden' '409': $ref: '#/components/responses/Conflict' '422': $ref: '#/components/responses/UnprocessableEntity' /shops-v2: post: tags: - Shop summary: '新規店舗を追加する' x-pokepay-operator-name: "CreateShopV2" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["name"] properties: name: type: string minLength: 1 maxLength: 256 title: '店舗名' description: |- 店舗名です。 同一組織内に同名の店舗があった場合は`name_conflict`エラーが返ります。 example: 'oxスーパー三田店' postal_code: type: string pattern: '^[0-9]{3}-?[0-9]{4}$' title: '店舗の郵便番号' address: type: string maxLength: 256 title: '店舗の住所' example: '東京都港区芝...' tel: type: string pattern: '^0[0-9]{1,3}-?[0-9]{2,4}-?[0-9]{3,4}$' title: '店舗の電話番号' email: type: string format: email maxLength: 256 title: '店舗のメールアドレス' external_id: type: string maxLength: 36 title: '店舗の外部ID' organization_code: type: string pattern: '^[a-zA-Z0-9-]*$' maxLength: 32 title: '組織コード' example: 'ox-supermarket' private_money_ids: type: array items: type: string format: uuid minItems: 1 title: '店舗で有効にするマネーIDの配列' description: |- 店舗で有効にするマネーIDの配列を指定します。 店舗が所属する組織が発行または加盟しているマネーのみが指定できます。利用できないマネーが指定された場合は`unavailable_private_money`エラーが返ります。 このパラメータを省略したときは、店舗が所属する組織が発行または加盟している全てのマネーのウォレットができます。 can_topup_private_money_ids: type: array items: type: string format: uuid minItems: 0 title: '店舗でチャージ可能にするマネーIDの配列' description: |- 店舗でチャージ可能にするマネーIDの配列を指定します。 このパラメータは発行体のみが指定でき、自身が発行しているマネーのみを指定できます。加盟店が他発行体のマネーに加盟している場合でも、そのチャージ可否を変更することはできません。 省略したときは対象店舗のその発行体の全てのマネーのアカウントがチャージ不可となります。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ShopWithAccounts' '400': $ref: '#/components/responses/InvalidParameters' '403': $ref: '#/components/responses/Forbidden' '409': $ref: '#/components/responses/Conflict' '422': $ref: '#/components/responses/UnprocessableEntity' /shops/{shop_id}: get: tags: - Shop summary: '店舗情報を表示する' description: |- 店舗情報を表示します。 権限に関わらず自組織の店舗情報は表示可能です。それに加え、発行体は自組織の発行しているマネーの加盟店組織の店舗情報を表示できます。 x-pokepay-operator-name: "GetShop" x-pokepay-allow-server-side: true parameters: - in: path name: shop_id required: true schema: type: string format: uuid title: '店舗ユーザーID' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ShopWithAccounts' '400': $ref: '#/components/responses/InvalidParameters' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' patch: tags: - Shop summary: '店舗情報を更新する' description: |- 店舗情報を更新します。bodyパラメーターは全て省略可能で、指定したもののみ更新されます。 x-pokepay-operator-name: "UpdateShop" x-pokepay-allow-server-side: true parameters: - in: path name: shop_id required: true schema: type: string format: uuid title: '店舗ユーザーID' requestBody: required: true content: application/json: schema: properties: name: type: string minLength: 1 maxLength: 256 title: '店舗名' description: |- 店舗名です。 同一組織内に同名の店舗があった場合は`shop_name_conflict`エラーが返ります。 example: 'oxスーパー三田店' postal_code: type: string pattern: '^[0-9]{3}-?[0-9]{4}$' title: '店舗の郵便番号' description: |- 店舗住所の郵便番号(7桁の数字)です。ハイフンは無視されます。明示的に空の値を設定するにはNULLを指定します。 nullable: true address: type: string maxLength: 256 title: '店舗の住所' example: '東京都港区芝...' nullable: true tel: type: string pattern: '^0[0-9]{1,3}-?[0-9]{2,4}-?[0-9]{3,4}$' title: '店舗の電話番号' description: |- 店舗の電話番号です。ハイフンは無視されます。明示的に空の値を設定するにはNULLを指定します。 nullable: true email: type: string format: email maxLength: 256 title: '店舗のメールアドレス' description: |- 店舗の連絡先メールアドレスです。明示的に空の値を設定するにはNULLを指定します。 nullable: true external_id: type: string maxLength: 36 title: '店舗の外部ID' description: |- 店舗の外部IDです(最大36文字)。明示的に空の値を設定するにはNULLを指定します。 nullable: true private_money_ids: type: array items: type: string format: uuid minItems: 0 title: '店舗で有効にするマネーIDの配列' description: |- 店舗で有効にするマネーIDの配列を指定します。 店舗が所属する組織が発行または加盟しているマネーのみが指定できます。利用できないマネーが指定された場合は`unavailable_private_money`エラーが返ります。 店舗が既にウォレットを持っている場合に、ここでそのウォレットのマネーIDを指定しないで更新すると、そのマネーのウォレットは凍結(無効化)されます。 can_topup_private_money_ids: type: array items: type: string format: uuid minItems: 0 title: '店舗でチャージ可能にするマネーIDの配列' description: |- 店舗でチャージ可能にするマネーIDの配列を指定します。 このパラメータは発行体のみが指定でき、発行しているマネーのみを指定できます。加盟店が他発行体のマネーに加盟している場合でも、そのチャージ可否を変更することはできません。 省略したときは対象店舗のその発行体の全てのマネーのアカウントがチャージ不可となります。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ShopWithAccounts' '400': $ref: '#/components/responses/InvalidParameters' '403': $ref: '#/components/responses/Forbidden' '409': $ref: '#/components/responses/Conflict' '422': $ref: '#/components/responses/UnprocessableEntity' /private-moneys: get: tags: - Private Money summary: マネー一覧を取得する description: |- マネーの一覧を取得します。 パートナーキーの管理者が発行体組織に属している場合、自組織が加盟または発行しているマネーの一覧を返します。また、`organization_code`として決済加盟店の組織コードを指定した場合、発行マネーのうち、その決済加盟店組織が加盟しているマネーの一覧を返します。 パートナーキーの管理者が決済加盟店組織に属している場合は、自組織が加盟しているマネーの一覧を返します。 x-pokepay-operator-name: "GetPrivateMoneys" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: properties: organization_code: type: string pattern: '^[a-zA-Z0-9-]*$' maxLength: 32 title: '組織コード' description: |- パートナーキーの管理者が発行体組織に属している場合、発行マネーのうち、この組織コードで指定した決済加盟店組織が加盟しているマネーの一覧を返します。決済加盟店組織の管理者は自組織以外を指定することはできません。 example: 'ox-supermarket' page: type: integer minimum: 1 title: 'ページ番号' example: 1 per_page: type: integer minimum: 1 title: '1ページ分の取得数' example: 50 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedPrivateMoneys' '400': $ref: '#/components/responses/InvalidParameters' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /private-moneys/{private_money_id}/organization-summaries: get: tags: - Private Money summary: 決済加盟店の取引サマリを取得する x-pokepay-operator-name: "GetPrivateMoneyOrganizationSummaries" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: x-pokepay-conditional-parameters: {xnor: [from, to]} properties: from: type: string format: date-time title: '開始日時(toと同時に指定する必要有)' to: type: string format: date-time title: '終了日時(fromと同時に指定する必要有)' page: type: integer minimum: 1 title: 'ページ番号' example: 1 per_page: type: integer minimum: 1 title: '1ページ分の取引数' example: 50 parameters: - in: path name: private_money_id required: true schema: type: string format: uuid title: マネーID responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedPrivateMoneyOrganizationSummaries' '400': $ref: '#/components/responses/InvalidParameters' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /customers/transactions: get: tags: - Customer summary: '取引履歴を取得する' description: '取引一覧を返します。' x-pokepay-operator-name: "ListCustomerTransactions" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["private_money_id"] properties: private_money_id: type: string format: uuid title: 'マネーID' description: |- マネーIDです。 フィルターとして使われ、指定したマネーでの取引のみ一覧に表示されます。 sender_customer_id: type: string format: uuid title: '送金エンドユーザーID' description: |- 送金ユーザーIDです。 フィルターとして使われ、指定された送金ユーザーでの取引のみ一覧に表示されます。 receiver_customer_id: type: string format: uuid title: '受取エンドユーザーID' description: |- 受取ユーザーIDです。 フィルターとして使われ、指定された受取ユーザーでの取引のみ一覧に表示されます。 type: type: string title: '取引種別、チャージ=topup、支払い=payment、個人間送金=transfer' description: |- 取引の種類でフィルターします。 以下の種類を指定できます。 1. topup 店舗からエンドユーザーへの送金取引(チャージ) 2. payment エンドユーザーから店舗への送金取引(支払い) 3. exchange 他マネーへの流出(outflow)/他マネーからの流入(inflow) 4. transfer 個人間送金 is_modified: type: boolean title: 'キャンセル済みかどうか' description: |- キャンセル済みかどうかを判定するフラグです。 これにtrueを指定するとキャンセルされた取引のみ一覧に表示されます。 falseを指定するとキャンセルされていない取引のみ一覧に表示されます 何も指定しなければキャンセルの有無にかかわらず一覧に表示されます。 from: type: string format: date-time title: '開始日時' description: |- 抽出期間の開始日時です。 フィルターとして使われ、開始日時以降に発生した取引のみ一覧に表示されます。 to: type: string format: date-time title: '終了日時' description: |- 抽出期間の終了日時です。 フィルターとして使われ、終了日時以前に発生した取引のみ一覧に表示されます。 page: type: integer minimum: 1 title: 'ページ番号' description: 取得したいページ番号です。 example: 1 per_page: type: integer minimum: 1 title: '1ページ分の取引数' description: 1ページ分の取引数です。 example: 50 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaginatedTransaction' '400': $ref: '#/components/responses/InvalidParameters' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /bulk-transactions/{bulk_transaction_id}: get: summary: バルク取引ジョブの実行状況を取得する x-pokepay-operator-name: "GetBulkTransaction" x-pokepay-allow-server-side: true parameters: - in: path name: bulk_transaction_id schema: type: string format: uuid title: 'バルク取引ジョブID' description: |- バルク取引ジョブIDです。 バルク取引ジョブ登録時にレスポンスに含まれます。 required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BulkTransaction' '400': $ref: '#/components/responses/InvalidParameters' '404': $ref: '#/components/responses/NotFound' /cashtrays: post: tags: - Cashtray summary: 'Cashtrayを作る' description: | Cashtrayを作成します。 エンドユーザーに対して支払いまたはチャージを行う店舗の情報(店舗ユーザーIDとマネーID)と、取引金額が必須項目です。 店舗ユーザーIDとマネーIDから店舗ウォレットを特定します。 その他に、Cashtrayから作られる取引に対する説明文や失効時間を指定できます。 x-pokepay-operator-name: "CreateCashtray" x-pokepay-allow-server-side: true requestBody: required: true content: application/json: schema: required: ["private_money_id", "shop_id", "amount"] properties: private_money_id: type: string format: uuid title: 'マネーID' description: |- 取引対象のマネーのIDです(必須項目)。 shop_id: type: string format: uuid title: '店舗ユーザーID' description: |- 店舗のユーザーIDです(必須項目)。 amount: type: number title: '金額' description: |- マネー額です(必須項目)。 正の値を与えるとチャージになり、負の値を与えると支払いとなります。 description: type: string maxLength: 200 title: '取引履歴に表示する説明文' description: |- Cashtrayを読み取ったときに作られる取引の説明文です(最大200文字、任意項目)。 アプリや管理画面などの取引履歴に表示されます。デフォルトでは空文字になります。 example: たい焼き(小倉) expires_in: type: integer minimum: 1 title: '失効時間(秒)' description: |- Cashtrayが失効するまでの時間を秒単位で指定します(任意項目、デフォルト値は1800秒(30分))。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Cashtray' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' /cashtrays/{cashtray_id}: get: tags: - Cashtray summary: 'Cashtrayの情報を取得する' description: |- Cashtrayの情報を取得します。 Cashtrayの現在の状態に加え、エンドユーザーのCashtray読み取りの試行結果、Cashtray読み取りによって作られた取引情報が取得できます。 レスポンス中の `attempt` には、このCashtrayをエンドユーザーが読み取った試行結果が入ります。 `account` はエンドユーザーのウォレット情報です。 成功時には `attempt` 内の `status_code` に200が入ります。 まだCashtrayが読み取られていない場合は `attempt` の内容は `NULL` になります。 エンドユーザーのCashtray読み取りの際には、様々なエラーが起き得ます。 エラーの詳細は `attempt` 中の `error_type` と `error_message` にあります。主なエラー型と対応するステータスコードを以下に列挙します。 - `cashtray_already_proceed (422)` - 既に処理済みのCashtrayをエンドユーザーが再び読み取ったときに返されます - `cashtray_expired (422)` - 読み取り時点でCashtray自体の有効期限が切れているときに返されます。Cashtrayが失効する時刻はレスポンス中の `expires_at` にあります - `cashtray_already_canceled (422)` - 読み取り時点でCashtrayが無効化されているときに返されます - `account_balance_not_enough (422)` - 支払い時に、エンドユーザーの残高が不足していて取引が完了できなかったときに返されます - `account_balance_exceeded` - チャージ時に、エンドユーザーのウォレット上限を超えて取引が完了できなかったときに返されます - `account_transfer_limit_exceeded (422)` - マネーに設定されている一度の取引金額の上限を超えたため、取引が完了できなかったときに返されます - `account_not_found (422)` - Cashtrayに設定されたマネーのウォレットをエンドユーザーが持っていなかったときに返されます レスポンス中の `transaction` には、このCashtrayをエンドユーザーが読み取ることによって作られる取引データが入ります。まだCashtrayが読み取られていない場合は `NULL` になります。 以上をまとめると、Cashtrayの状態は以下のようになります。 - エンドユーザーのCashtray読み取りによって取引が成功した場合 - レスポンス中の `attempt` と `transaction` にそれぞれ値が入ります - 何らかの理由で取引が失敗した場合 - レスポンス中の `attempt` にエラー内容が入り、 `transaction` には `NULL` が入ります - まだCashtrayが読み取られていない場合 - レスポンス中の `attempt` と `transaction` にそれぞれ `NULL` が入ります。Cashtrayの `expires_at` が現在時刻より前の場合は有効期限切れ状態です。 Cashtrayの取り得る全ての状態を擬似コードで記述すると以下のようになります。 ``` if (attempt == null) { // 状態は未確定 if (canceled_at != null) { // 無効化済み } else if (expires_at < now) { // 失効済み } else { // まだ有効で読み取られていない } } else if (transaction != null) { // 取引成功確定。attempt で読み取ったユーザなどが分かる } else { // 取引失敗確定。attempt で失敗理由などが分かる } ``` x-pokepay-operator-name: "GetCashtray" x-pokepay-allow-server-side: true parameters: - in: path name: cashtray_id required: true schema: type: string format: uuid title: 'CashtrayのID' description: |- 情報を取得するCashtrayのIDです。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CashtrayWithResult' '400': $ref: '#/components/responses/InvalidParameters' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' delete: tags: - Cashtray summary: 'Cashtrayを無効化する' description: |- Cashtrayを無効化します。 これにより、 `GetCashtray` のレスポンス中の `canceled_at` に無効化時点での現在時刻が入るようになります。 エンドユーザーが無効化されたQRコードを読み取ると `cashtray_already_canceled` エラーとなり、取引は失敗します。 x-pokepay-operator-name: "CancelCashtray" x-pokepay-allow-server-side: true parameters: - in: path name: cashtray_id required: true schema: type: string format: uuid title: 'CashtrayのID' description: |- 無効化するCashtrayのIDです。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Cashtray' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' patch: tags: - Cashtray summary: 'Cashtrayの情報を更新する' description: Cashtrayの内容を更新します。bodyパラメーターは全て省略可能で、指定したもののみ更新されます。 x-pokepay-operator-name: "UpdateCashtray" x-pokepay-allow-server-side: true parameters: - in: path name: cashtray_id required: true schema: type: string format: uuid title: 'CashtrayのID' description: |- 更新対象のCashtrayのIDです。 requestBody: required: true content: application/json: schema: properties: amount: type: number title: '金額' description: |- マネー額です(任意項目)。 正の値を与えるとチャージになり、負の値を与えると支払いとなります。 description: type: string maxLength: 200 title: '取引履歴に表示する説明文' description: |- Cashtrayを読み取ったときに作られる取引の説明文です(最大200文字、任意項目)。 アプリや管理画面などの取引履歴に表示されます。 example: たい焼き(小倉) expires_in: type: integer minimum: 1 title: '失効時間(秒)' description: |- Cashtrayが失効するまでの時間を秒で指定します(任意項目、デフォルト値は1800秒(30分))。 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Cashtray' '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity'