Hifi Transfer Approvals API
Transfer approval workflow and admin actions
Transfer approval workflow and admin actions
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/hifi-transfer-approvals-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Hifi Account Transfer Approvals API
version: 2.0.0
description: API documentation for Hifi
servers:
- url: https://production.hifibridge.com
description: Production server
- url: https://sandbox.hifibridge.com
description: Sandbox server
security:
- bearerAuth: []
tags:
- name: Transfer Approvals
description: Transfer approval workflow and admin actions
paths:
/v2/transfer-approvals:
get:
tags:
- Transfer Approvals
summary: List all pending transfer approvals
description: Retrieve all pending transfer approvals that require admin action
parameters:
- name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 20
description: Number of approvals to return
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
default: 0
description: Number of approvals to skip
responses:
'200':
description: Transfer approvals retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetTransferApprovalsResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'500':
$ref: '#/components/responses/InternalServerErrorResponse'
/v2/transfer-approvals/{approvalId}/approve:
post:
tags:
- Transfer Approvals
summary: Approve a transfer
description: Approve a pending transfer. If enough approvals are received, the transfer will be queued for execution.
parameters:
- name: approvalId
in: path
required: true
schema:
type: string
format: uuid
description: ID of the transfer approval
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApproveTransferRequest'
responses:
'200':
description: Transfer approval recorded successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ApproveTransferResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'500':
$ref: '#/components/responses/InternalServerErrorResponse'
/v2/transfer-approvals/{approvalId}/reject:
post:
tags:
- Transfer Approvals
summary: Reject a transfer
description: Reject a pending transfer. This will cancel the transfer and return funds to the sender.
parameters:
- name: approvalId
in: path
required: true
schema:
type: string
format: uuid
description: ID of the transfer approval
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RejectTransferRequest'
responses:
'200':
description: Transfer rejected successfully
content:
application/json:
schema:
$ref: '#/components/schemas/RejectTransferResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'500':
$ref: '#/components/responses/InternalServerErrorResponse'
/v2/transfer-approvals/{approvalId}:
get:
tags:
- Transfer Approvals
summary: Get a transfer approval
description: Retrieve detailed information about a specific transfer approval
parameters:
- name: approvalId
in: path
required: true
schema:
type: string
format: uuid
description: ID of the transfer approval
responses:
'200':
description: Transfer approval details retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetTransferApprovalResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'500':
$ref: '#/components/responses/InternalServerErrorResponse'
components:
schemas:
InternalServerError:
type: object
properties:
error:
type: string
example: Unexpected error happened
Unauthorized:
type: object
properties:
error:
type: string
example: Not authorized
TransferApprovalDetail:
type: object
properties:
id:
type: string
format: uuid
example: approval-123-e89b-12d3-a456-426614174002
transferId:
type: string
format: uuid
example: transfer-456-e89b-12d3-a456-426614174003
status:
type: string
enum:
- PENDING
- APPROVED
- REJECTED
- EXPIRED
example: PENDING
description: Current status of the approval process
createdAt:
type: string
format: date-time
example: '2024-01-15T10:30:00.000Z'
updatedAt:
type: string
format: date-time
example: '2024-01-15T11:00:00.000Z'
description: When the approval was last updated
transferType:
type: string
enum:
- WALLET.TRANSFER
- WALLET.TRANSFER.BATCH
- WALLET.BRIDGE
example: WALLET.TRANSFER
description: Type of transfer requiring approval
votes:
type: array
items:
$ref: '#/components/schemas/ApprovalVote'
description: Array of votes cast on this approval
GetTransferApprovalResponse:
type: object
properties:
success:
type: boolean
example: true
description: Whether the operation was successful
message:
type: string
example: Approval details retrieved successfully
description: Human-readable message about the operation
approval:
$ref: '#/components/schemas/TransferApprovalDetail'
RejectTransferRequest:
type: object
description: Request body for rejecting a transfer
properties:
reason:
type: string
maxLength: 1000
description: Reason for rejecting the transfer
example: Transfer amount exceeds daily limit
RejectTransferResponse:
type: object
properties:
success:
type: boolean
example: true
description: Whether the operation was successful
message:
type: string
example: Transfer rejected successfully
description: Human-readable message about the operation
approvalId:
type: string
format: uuid
description: ID of the approval being processed
example: approval-123-e89b-12d3-a456-426614174002
status:
type: string
enum:
- REJECTED
example: REJECTED
description: Current status after rejection
reason:
type: string
description: Reason for rejection
example: Transfer amount exceeds daily limit
timestamp:
type: string
format: date-time
description: When the rejection was processed
example: '2024-01-15T11:00:00.000Z'
GetTransferApprovalsResponse:
type: object
properties:
success:
type: boolean
example: true
description: Whether the operation was successful
message:
type: string
example: Pending approvals retrieved successfully
description: Human-readable message about the operation
count:
type: integer
description: Total number of pending approvals
example: 2
approvals:
type: array
items:
$ref: '#/components/schemas/TransferApprovalSummary'
description: Array of pending approval records
ApproveTransferRequest:
type: object
description: Request body for approving a transfer
properties:
comment:
type: string
maxLength: 1000
description: Optional comment explaining the approval decision
example: Approved after reviewing transaction details
ApproveTransferResponse:
type: object
properties:
success:
type: boolean
example: true
description: Whether the operation was successful
message:
type: string
example: Transfer approved and initiated successfully
description: Human-readable message about the operation
approvalId:
type: string
format: uuid
description: ID of the approval being processed
example: approval-123-e89b-12d3-a456-426614174002
status:
type: string
enum:
- APPROVED
example: APPROVED
description: Current status after approval
timestamp:
type: string
format: date-time
description: When the approval was processed
example: '2024-01-15T11:00:00.000Z'
ApprovalVote:
type: object
properties:
approverId:
type: string
format: uuid
example: profile-789-e89b-12d3-a456-426614174006
description: ID of the approver who cast the vote
vote:
type: string
enum:
- APPROVE
- REJECT
example: APPROVE
description: The vote cast by the approver
comment:
type:
- string
- 'null'
example: Approved after reviewing transaction details
description: Optional comment explaining the vote decision
createdAt:
type: string
format: date-time
example: '2024-01-15T11:00:00.000Z'
description: When the vote was cast
TransferApprovalSummary:
type: object
properties:
id:
type: string
format: uuid
example: approval-123-e89b-12d3-a456-426614174002
transferId:
type: string
format: uuid
example: transfer-456-e89b-12d3-a456-426614174003
status:
type: string
enum:
- PENDING
- APPROVED
- REJECTED
- EXPIRED
example: PENDING
description: Current status of the approval process
createdAt:
type: string
format: date-time
example: '2024-01-15T10:30:00.000Z'
updatedAt:
type: string
format: date-time
example: '2024-01-15T11:00:00.000Z'
description: When the approval was last updated
transferType:
type: string
enum:
- WALLET.TRANSFER
- WALLET.TRANSFER.BATCH
- WALLET.BRIDGE
example: WALLET.TRANSFER
description: Type of transfer requiring approval
responses:
NotFoundResponse:
description: Resource not found
content:
application/json:
schema:
type: object
properties:
status:
type: string
enum:
- error
error:
type: object
properties:
code:
type: string
message:
type: string
InternalServerErrorResponse:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
UnauthorizedResponse:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Unauthorized'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT