FinanceGenius.AI CRM compliance API

The CRM compliance API from FinanceGenius.AI — 27 operation(s) for crm compliance.

GitHub OpenAPI

Operations 30

GET /api/v1/crm/compliance/summary Summary #
GET /api/v1/crm/compliance/rights List Rights #
POST /api/v1/crm/compliance/rights Intake Rights #
GET /api/v1/crm/compliance/rights/{request_id} Get Rights #
POST /api/v1/crm/compliance/rights/{request_id}/verify Verify Rights #
GET /api/v1/crm/compliance/rights/{request_id}/erasure-preview Erasure Preview #
POST /api/v1/crm/compliance/rights/{request_id}/approve Approve Rights #
POST /api/v1/crm/compliance/rights/{request_id}/execute Execute Rights #
POST /api/v1/crm/compliance/rights/{request_id}/complete Complete Rights #
POST /api/v1/crm/compliance/rights/{request_id}/refuse Refuse Rights #
POST /api/v1/crm/compliance/rights/notifications/{notification_id} Update Notification #
POST /api/v1/crm/compliance/rights/minor-erasure Minor Erasure #
POST /api/v1/crm/compliance/rights/legacy-sync Legacy Sync #
GET /api/v1/crm/compliance/grievances List Grievances #
POST /api/v1/crm/compliance/grievances Intake Grievance #
GET /api/v1/crm/compliance/grievances/{grievance_id} Get Grievance #
POST /api/v1/crm/compliance/grievances/{grievance_id}/acknowledge Acknowledge #
POST /api/v1/crm/compliance/grievances/{grievance_id}/pass-to-lender Pass To Lender #
POST /api/v1/crm/compliance/grievances/{grievance_id}/resolve Resolve #
POST /api/v1/crm/compliance/grievances/{grievance_id}/link Link #
GET /api/v1/crm/compliance/grievance-officer Grievance Officer #
GET /api/v1/crm/compliance/breach List Breach #
POST /api/v1/crm/compliance/breach Open Breach #
POST /api/v1/crm/compliance/breach/{incident_id}/notices Record Notice #
POST /api/v1/crm/compliance/breach/{incident_id}/close Close Breach #
GET /api/v1/crm/compliance/retention/classes Retention Classes #
GET /api/v1/crm/compliance/purge-jobs Purge Jobs #
POST /api/v1/crm/compliance/purge-jobs/{job}/run Run Purge #
GET /api/v1/crm/compliance/monitors Monitor Results #
POST /api/v1/crm/compliance/monitors/run Run Monitors #

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/financegenius-ai:financegenius-ai-crm-compliance-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

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

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

OpenAPI Specification

financegenius-ai-crm-compliance-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Financegenius Ai CRM compliance API
  version: 1.0.0
  description: 'Operations tagged CRM compliance across 2 of this provider''s published API definitions: finmall-openapi.json, financegenius-ai-openapi.json. Each path carries the servers of the definition it was published in.'
tags:
- name: CRM compliance
paths:
  /api/v1/crm/compliance/summary:
    get:
      tags:
      - CRM compliance
      summary: Summary
      operationId: summary_api_v1_crm_compliance_summary_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/v1/crm/compliance/rights:
    get:
      tags:
      - CRM compliance
      summary: List Rights
      operationId: list_rights_api_v1_crm_compliance_rights_get
      parameters:
      - name: open_only
        in: query
        required: false
        schema:
          type: boolean
          default: true
          title: Open Only
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - CRM compliance
      summary: Intake Rights
      description: Log a request received by phone, email, WhatsApp or post. It waits for the customer's OTP.
      operationId: intake_rights_api_v1_crm_compliance_rights_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RightsIntake'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/rights/{request_id}:
    get:
      tags:
      - CRM compliance
      summary: Get Rights
      operationId: get_rights_api_v1_crm_compliance_rights__request_id__get
      parameters:
      - name: request_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Request Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/rights/{request_id}/verify:
    post:
      tags:
      - CRM compliance
      summary: Verify Rights
      description: Attach the OTP the customer completed with us (its reference from their timeline).
      operationId: verify_rights_api_v1_crm_compliance_rights__request_id__verify_post
      parameters:
      - name: request_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Request Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerifyIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/rights/{request_id}/erasure-preview:
    get:
      tags:
      - CRM compliance
      summary: Erasure Preview
      description: What the erasure would remove, as counts, for the approver. Changes nothing.
      operationId: erasure_preview_api_v1_crm_compliance_rights__request_id__erasure_preview_get
      parameters:
      - name: request_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Request Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/rights/{request_id}/approve:
    post:
      tags:
      - CRM compliance
      summary: Approve Rights
      operationId: approve_rights_api_v1_crm_compliance_rights__request_id__approve_post
      parameters:
      - name: request_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Request Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/rights/{request_id}/execute:
    post:
      tags:
      - CRM compliance
      summary: Execute Rights
      description: 'Run an approved erasure: keys shredded first, then rows, then the notification tasks.'
      operationId: execute_rights_api_v1_crm_compliance_rights__request_id__execute_post
      parameters:
      - name: request_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Request Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/rights/{request_id}/complete:
    post:
      tags:
      - CRM compliance
      summary: Complete Rights
      operationId: complete_rights_api_v1_crm_compliance_rights__request_id__complete_post
      parameters:
      - name: request_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Request Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/app__api__v1__crm_rights__OutcomeIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/rights/{request_id}/refuse:
    post:
      tags:
      - CRM compliance
      summary: Refuse Rights
      operationId: refuse_rights_api_v1_crm_compliance_rights__request_id__refuse_post
      parameters:
      - name: request_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Request Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefuseIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/rights/notifications/{notification_id}:
    post:
      tags:
      - CRM compliance
      summary: Update Notification
      description: Mark a processor or lender told (sent), confirmed (acknowledged) or not applicable.
      operationId: update_notification_api_v1_crm_compliance_rights_notifications__notification_id__post
      parameters:
      - name: notification_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Notification Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/rights/minor-erasure:
    post:
      tags:
      - CRM compliance
      summary: Minor Erasure
      description: 'R8: an under-18 was detected. Opens an erasure (no OTP needed); the founder still approves it.'
      operationId: minor_erasure_api_v1_crm_compliance_rights_minor_erasure_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MinorIn'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/rights/legacy-sync:
    post:
      tags:
      - CRM compliance
      summary: Legacy Sync
      operationId: legacy_sync_api_v1_crm_compliance_rights_legacy_sync_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/v1/crm/compliance/grievances:
    get:
      tags:
      - CRM compliance
      summary: List Grievances
      operationId: list_grievances_api_v1_crm_compliance_grievances_get
      parameters:
      - name: open_only
        in: query
        required: false
        schema:
          type: boolean
          default: true
          title: Open Only
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - CRM compliance
      summary: Intake Grievance
      operationId: intake_grievance_api_v1_crm_compliance_grievances_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GrievanceIntake'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/grievances/{grievance_id}:
    get:
      tags:
      - CRM compliance
      summary: Get Grievance
      operationId: get_grievance_api_v1_crm_compliance_grievances__grievance_id__get
      parameters:
      - name: grievance_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Grievance Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/grievances/{grievance_id}/acknowledge:
    post:
      tags:
      - CRM compliance
      summary: Acknowledge
      operationId: acknowledge_api_v1_crm_compliance_grievances__grievance_id__acknowledge_post
      parameters:
      - name: grievance_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Grievance Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/grievances/{grievance_id}/pass-to-lender:
    post:
      tags:
      - CRM compliance
      summary: Pass To Lender
      operationId: pass_to_lender_api_v1_crm_compliance_grievances__grievance_id__pass_to_lender_post
      parameters:
      - name: grievance_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Grievance Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LenderIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/grievances/{grievance_id}/resolve:
    post:
      tags:
      - CRM compliance
      summary: Resolve
      operationId: resolve_api_v1_crm_compliance_grievances__grievance_id__resolve_post
      parameters:
      - name: grievance_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Grievance Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/app__api__v1__crm_rights__ResolveIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/grievances/{grievance_id}/link:
    post:
      tags:
      - CRM compliance
      summary: Link
      operationId: link_api_v1_crm_compliance_grievances__grievance_id__link_post
      parameters:
      - name: grievance_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Grievance Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/app__api__v1__crm_rights__LinkIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/grievance-officer:
    get:
      tags:
      - CRM compliance
      summary: Grievance Officer
      operationId: grievance_officer_api_v1_crm_compliance_grievance_officer_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/v1/crm/compliance/breach:
    get:
      tags:
      - CRM compliance
      summary: List Breach
      operationId: list_breach_api_v1_crm_compliance_breach_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
    post:
      tags:
      - CRM compliance
      summary: Open Breach
      operationId: open_breach_api_v1_crm_compliance_breach_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BreachIn'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/breach/{incident_id}/notices:
    post:
      tags:
      - CRM compliance
      summary: Record Notice
      description: The founder signs breach notices; this records that one went, and when.
      operationId: record_notice_api_v1_crm_compliance_breach__incident_id__notices_post
      parameters:
      - name: incident_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Incident Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NoticeIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/breach/{incident_id}/close:
    post:
      tags:
      - CRM compliance
      summary: Close Breach
      operationId: close_breach_api_v1_crm_compliance_breach__incident_id__close_post
      parameters:
      - name: incident_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Incident Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/retention/classes:
    get:
      tags:
      - CRM compliance
      summary: Retention Classes
      operationId: retention_classes_api_v1_crm_compliance_retention_classes_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/v1/crm/compliance/purge-jobs:
    get:
      tags:
      - CRM compliance
      summary: Purge Jobs
      operationId: purge_jobs_api_v1_crm_compliance_purge_jobs_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/v1/crm/compliance/purge-jobs/{job}/run:
    post:
      tags:
      - CRM compliance
      summary: Run Purge
      description: Run one job now. A dry run unless CRM_PURGE_LIVE=true; asking for live without it is refused.
      operationId: run_purge_api_v1_crm_compliance_purge_jobs__job__run_post
      parameters:
      - name: job
        in: path
        required: true
        schema:
          type: string
          title: Job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PurgeIn'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/monitors:
    get:
      tags:
      - CRM compliance
      summary: Monitor Results
      operationId: monitor_results_api_v1_crm_compliance_monitors_get
      parameters:
      - name: monitor
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Monitor
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/crm/compliance/monitors/run:
    post:
      tags:
      - CRM compliance
      summary: Run Monitors
      description: Run the monitors over yesterday (IST) now. Provider send logs are connected in Wave 2.
      operationId: run_monitors_api_v1_crm_compliance_monitors_run_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
components:
  schemas:
    NomineeIn:
      properties:
        full_name:
          type: string
          maxLength: 120
          title: Full Name
        relationship:
          type: string
          title: Relationship
        contact:
          type: string
          maxLength: 120
          title: Contact
      type: object
      required:
      - full_name
      - relationship
      - contact
      title: NomineeIn
    app__api__v1__crm_rights__ResolveIn:
      properties:
        resolution:
          type: string
          title: Resolution
      type: object
      required:
      - resolution
      title: ResolveIn
    PurgeIn:
      properties:
        live:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Live
      type: object
      title: PurgeIn
    VerifyIn:
      properties:
        otp_ref:
          type: string
          format: uuid
          title: Otp Ref
      type: object
      required:
      - otp_ref
      title: VerifyIn
    GrievanceIntake:
      properties:
        customer_ref:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Customer Ref
        category:
          type: string
          title: Category
        intake_channel:
          type: string
          title: Intake Channel
          default: web
        summary:
          anyOf:
          - type: string
            maxLength: 4000
          - type: 'null'
          title: Summary
        conversation_ref:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Conversation Ref
      type: object
      required:
      - category
      title: GrievanceIntake
    RightsIntake:
      properties:
        customer_ref:
          type: string
          format: uuid
          title: Customer Ref
        kind:
          type: string
          title: Kind
        intake_channel:
          type: string
          title: Intake Channel
          default: voice
        detail:
          anyOf:
          - type: string
            maxLength: 4000
          - type: 'null'
          title: Detail
        nominee:
          anyOf:
          - $ref: '#/components/schemas/NomineeIn'
          - type: 'null'
      type: object
      required:
      - customer_ref
      - kind
      title: RightsIntake
    NoticeIn:
      properties:
        recipient:
          type: string
          title: Recipient
        lender_code:
          anyOf:
          - type: string
          - type: 'null'
          title: Lender Code
        sent_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Sent At
      type: object
      required:
      - recipient
      title: NoticeIn
    RefuseIn:
      properties:
        reason:
          type: string
          title: Reason
      type: object
      required:
      - reason
      title: RefuseIn
    MinorIn:
      properties:
        customer_ref:
          type: string
          format: uuid
          title: Customer Ref
      type: object
      required:
      - customer_ref
      title: MinorIn
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    LenderIn:
      properties:
        lender_code:
          type: string
          title: Lender Code
      type: object
      required:
      - lender_code
      title: LenderIn
    NotificationIn:
      properties:
        status:
          type: string
          title: Status
      type: object
      required:
      - status
      title: NotificationIn
    app__api__v1__crm_rights__OutcomeIn:
      properties:
        outcome:
          type: string
          title: Outcome
      type: object
      required:
      - outcome
      title: OutcomeIn
    BreachIn:
      properties:
        kind:
          type: string
          title: Kind
        noticed_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Noticed At
        personal_data:
          type: boolean
          title: Personal Data
        lenders:
          items:
            type: string
          type: array
          title: Lenders
          default: []
      type: object
      required:
      - kind
      - personal_data
      title: BreachIn
    app__api__v1__crm_rights__LinkIn:
      properties:
        customer_ref:
          type: string
          format: uuid
          title: Customer Ref
      type: object
      required:
      - customer_ref
      title: LinkIn
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
x-refined-from:
- finmall-openapi.json
- financegenius-ai-openapi.json
x-provenance:
  method: harvested
  publisher: FinanceGenius.AI
  source: https://api.finmall.ai/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)