Liquid Securities API Specification

The API changelog is viewable using the api/changelog endpoint.

The api/info endpoint will return the current API version.

The liquid-securities-confirm.py Python client will check that the version of it is compatible with the current API version before running any commands.

To view the API specification below in an interactive format it can be pasted into a tool such as swagger.io

The following is not guaranteed to be the latest version of the API specification and is presented only as an example of the API’s functionality. You will receive the latest version as part of a ‘Liquid Securities API Update’ email if you are signed up for a test or live account.

swagger: "2.0"
info:
  description: "This is an API for interacting with Liquid Securities.\n\n
    Examples of how to authenticate and call the API programmatically using
    Python and nodejs can be obtained by request."
  version: "0.1.0"
  title: "Liquid Securities"
  contact:
    email: "liquid-securities-support@blockstream.com"
host: "securities.blockstream.com"
basePath: "/api"
tags:
- name: "general"
  description: "General API operations"
- name: "user"
  description: "Operations about user and user information"
- name: "investors"
  description: "Operations about investors"
- name: "categories"
  description: "Operations about categories"
- name: "assets"
  description: "Operations about assets"
- name: "assignments"
  description: "Operations about asset assignments"
- name: "distributions"
  description: "Operations about asset distributions"
- name: "gaids"
  description: "Operations about Blockstream Green Liquid Securities
    subaccounts"
schemes:
- "https"
paths:
  /info:
    get:
      tags:
      - "general"
      summary: "Gets information about the API. Token authentication is not
        required by this endpoint."
      description: "API version information."
      consumes:
      - "application/json"
      produces:
      - "application/json"
      responses:
        200:
          description: ""
          schema:
            required:
              - version
            properties:
              version:
                type: string
                example: "1.0.1"
              notes:
                type: string
  /changelog:
    get:
      tags:
      - "general"
      summary: "Gets information about API changes."
      responses:
        200:
          description: "Map version: changelog, may include multiple versions."
          schema:
            properties:
              version:
                type: string
                example: "changelog"
  /user/obtain_token:
    post:
      tags:
      - "user"
      summary: "Returns a token used to authenticate all other API calls apart
        from /info."
      description: "The username and password you provide should be the ones
        used to access Liquid Securties. The token returned can be used in
        subsequent API calls by setting the request header like so:\n\n
        { 'content-type': 'application/json', 'Authorization':
        'token <returned_token>' } \n\nExamples of how to authenticate and
        call the API programmatically using Python and nodejs can be
        obtained by request."
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        required: true
        schema:
          required:
          - username
          - password
          properties:
            username:
              type: string
              description: "The username used to access Liquid Securities."
            password:
              type: string
              description: "The password used to access Liquid Securities."
      responses:
        200:
          description: "Authentication token"
          schema:
            required:
            - token
            properties:
              token:
                type: string
                description: "The token that can be used to authenticate
                  subsequent API calls."
        400:
          description: "Invalid credentials"
  /investors/:
    get:
      tags:
      - "investors"
      summary: "List of all Investors."
      description: ""
      responses:
        200:
          description: ""
          schema:
            type: array
            items:
              $ref: "#/definitions/InvestorResponse"
  /investors/{investorId}:
    get:
      tags:
      - "investors"
      summary: "Details of the Investor requested."
      description: ""
      parameters:
      - name: "investorId"
        in: "path"
        description: "ID of investor"
        required: true
        type: integer
      responses:
        200:
          description: ""
          schema:
            $ref: "#/definitions/InvestorResponse"
        403:
          description: "Not authorized"
        404:
          description: "Investor not found"
  /investors/add:
    post:
      tags:
      - "investors"
      summary: "Adds an Investor"
      description: "Accepts both a single investor and a list of investors.\n"
      parameters:
      - in: "body"
        name: "body"
        required: true
        schema:
          $ref: "#/definitions/InvestorAdd"
      responses:
        200:
          description: ""
          schema:
            $ref: "#/definitions/InvestorResponse"
        400:
          description: "Bad input.\nShows invalid GAIDs, if they exist."
        403:
          description: "Not authorized"
  /investors/{investorId}/edit:
    put:
      tags:
      - "investors"
      summary: "Updates an Investor"
      parameters:
      - name: "investorId"
        in: "path"
        description: "ID of investor"
        required: true
        type: integer
      - in: "body"
        name: "body"
        required: true
        schema:
          $ref: "#/definitions/InvestorEdit"
      responses:
        200:
          description: ""
          schema:
            $ref: "#/definitions/InvestorResponse"
        403:
          description: "Not authorized"
        404:
          description: "Investor not found"
  /investors/{investorId}/delete:
    delete:
      tags:
      - "investors"
      summary: "Deletes an Investor"
      parameters:
      - name: "investorId"
        in: "path"
        description: "ID of investor"
        required: true
        type: integer
      responses:
        204:
          description: "Successful delete"
        400:
          description: "Bad input"
        403:
          description: "Not authorized"
        404:
          description: "Investor not found"
  /investors/{investorId}/summary:
    get:
      tags:
      - "investors"
      summary: "Summary of the investor"
      parameters:
      - name: "investorId"
        in: "path"
        description: "ID of investor"
        required: true
        type: integer
      responses:
        200:
          description: ""
          schema:
            type: array
            items:
              $ref: "#/definitions/InvestorSummary"
        403:
          description: "Not authorized"
        404:
          description: "Investor not found"
  /investors/{investorId}/gaids:
    get:
      tags:
      - "investors"
      summary: "List of investor GAIDs"
      parameters:
      - name: "investorId"
        in: "path"
        description: "ID of investor"
        required: true
        type: integer
      responses:
        200:
          description: ""
          schema:
            type: array
            items:
              type: string
        400:
          description: "Bad input"
        403:
          description: "Not authorized"
  /investors/{investorId}/gaids/add:
    post:
      tags:
      - "investors"
      summary: "
          Associate a new GAID to investor.\n
          If the investor had no GAIDs, the new one will be set as the default
          GAID, otherwise the default GAID remains the same."
      parameters:
      - name: "investorId"
        in: "path"
        description: "ID of investor"
        required: true
        type: integer
      - in: "body"
        name: "GAID"
        required: true
        schema:
          type: string
      responses:
        200:
          description: "Success"
        400:
          description: "Bad input"
        403:
          description: "Not authorized"
  /investors/{investorId}/gaids/set-default:
    post:
      tags:
      - "investors"
      summary: "
          Set a GAID already associated to investor as the default.\n
          The default GAID is used to obtain receiving addresses from Green for
          assignments."
      parameters:
      - name: "investorId"
        in: "path"
        description: "ID of investor"
        required: true
        type: integer
      - in: "body"
        name: "GAID"
        required: true
        schema:
          type: string
      responses:
        200:
          description: "Success"
        400:
          description: "Bad input"
        403:
          description: "Not authorized"
  /investors/validate-gaid:
    post:
      tags:
      - "investors"
      summary: "Validate a GAID"
      description: "GAID identifies an account of a Green wallet, to be valid a
        GAID must be associated with a Liquid Securities account."
      parameters:
      - in: "body"
        name: "GAID"
        required: true
        schema:
          type: string
      responses:
        200:
          description: ""
          schema:
            $ref: "#/definitions/ValidateGaid"
        400:
          description: "Bad input"
        403:
          description: "Not authorized"
      deprecated: true
  /investors/{investorId}/categories/add:
    post:
      tags:
      - "investors"
      summary: "Associate an array of categories to the investor."
      description: ""
      parameters:
      - name: "investorId"
        in: "path"
        description: "ID of investor"
        required: true
        type: integer
      - in: "body"
        name: "body"
        required: true
        description: "Array of Category IDs"
        schema:
          type: array
          example: [1, 2]
          items:
            type: integer
      responses:
        200:
          description: ""
          schema:
            $ref: "#/definitions/InvestorResponse"
        400:
          description: "Bad input"
        403:
          description: "Not authorized"
        404:
          description: "Investor not found"
  /investors/{investorId}/categories/delete:
    delete:
      tags:
      - "investors"
      summary: "Remove an array of categories from the investor."
      description: ""
      parameters:
      - name: "investorId"
        in: "path"
        description: "ID of investor"
        required: true
        type: integer
      - in: "body"
        name: "body"
        required: true
        description: "Array of Category IDs"
        schema:
          type: array
          example: [1, 2]
          items:
            type: integer
      responses:
        200:
          description: ""
          schema:
            $ref: "#/definitions/InvestorResponse"
        400:
          description: "Bad input"
        403:
          description: "Not authorized"
        404:
          description: "Investor not found"
  /categories:
    get:
      tags:
      - "categories"
      summary: "Lists all Categories that can be associated with Investors."
      description: ""
      responses:
        200:
          description: "List of all investor categories"
          schema:
            type: array
            items:
              $ref: "#/definitions/CategoryResponse"
  /categories/add:
    post:
      tags:
      - "categories"
      summary: "Adds a new Category"
      description: "Adds a new category that can then be assigned to one or more
        Investors."
      parameters:
      - in: "body"
        name: "body"
        required: true
        schema:
          $ref: "#/definitions/CategoryAdd"
      responses:
        200:
          description: "Category"
          schema:
            $ref: "#/definitions/CategoryResponse"
        403:
          description: "Not authorized"
  /categories/{categoryId}:
    get:
      tags:
      - "categories"
      summary: "Gets the details of the provided category"
      description: "Returns details of the category. The id can be used to
        associate investors with the category elsewhere."
      parameters:
      - name: "categoryId"
        in: "path"
        description: "ID of category"
        required: true
        type: integer
      responses:
        200:
          description: "Category"
          schema:
            $ref: "#/definitions/CategoryResponse"
        403:
          description: "Not authorized"
        404:
          description: "Category not found"
  /categories/{categoryId}/edit:
    put:
      tags:
      - "categories"
      summary: "Allows the update of the name and description of a category."
      parameters:
      - name: "categoryId"
        in: "path"
        description: "ID of category"
        required: true
        type: integer
      - in: "body"
        name: "body"
        required: true
        schema:
          $ref: '#/definitions/CategoryEdit'
      responses:
        200:
          description: "Category"
          schema:
            $ref: "#/definitions/CategoryResponse"
        400:
          description: "Invalid data"
        403:
          description: "Not authorized"
        404:
          description: "Category not found"
  /categories/{categoryId}/delete:
    delete:
      tags:
      - "categories"
      summary: "Delete a category."
      description: ""
      parameters:
      - name: "categoryId"
        in: "path"
        description: "ID of category"
        required: true
        type: integer
      responses:
        204:
          description: "Successful delete"
        404:
          description: "Category not found"
        403:
          description: "Not authorized"
  /categories/{categoryId}/investors/add:
    post:
      tags:
      - "categories"
      description: "An Investor can be assigned to one or more
        categories using the categories array and providing the ids of the
        categories to associate with the Investor. \nThere must be Categories
        set up (you can use the /categories/add API) before an
        Investor can be assigned to them.\nThe wallet id should be the Green
        wallet id that has been created for the Investor."
      summary: "Add an array of investors to a category."
      parameters:
      - name: "categoryId"
        in: "path"
        description: "ID of category"
        required: true
        type: integer
      - in: "body"
        name: "body"
        required: true
        description: "Array of Investor IDs"
        schema:
          type: array
          example: [1, 2]
          items:
            type: integer
      responses:
        200:
          description: "Category"
          schema:
            $ref: "#/definitions/CategoryResponse"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
  /categories/{categoryId}/investors/delete:
    delete:
      tags:
      - "categories"
      summary: "Remove an array of investors from a category."
      description: ""
      parameters:
      - name: "categoryId"
        in: "path"
        description: "ID of category"
        required: true
        type: integer
      - in: "body"
        name: "body"
        required: true
        description: "Array of Investor IDs"
        schema:
          type: array
          example: [1, 2]
          items:
            type: integer
      responses:
        200:
          description: "Category"
          schema:
            $ref: "#/definitions/CategoryResponse"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
  /categories/{categoryId}/assets/add:
    post:
      tags:
      - "categories"
      summary: "Associate an array of assets to the category."
      description: ""
      parameters:
      - name: "categoryId"
        in: "path"
        description: "ID of category"
        required: true
        type: integer
      - in: "body"
        name: "body"
        required: true
        description: "Array of asset UUIDs"
        schema:
          type: array
          items:
            type: string
      responses:
        200:
          description: "Category"
          schema:
            $ref: "#/definitions/CategoryResponse"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Category not found"
  /categories/{categoryId}/assets/delete:
    delete:
      tags:
      - "categories"
      summary: "Remove an array of assets from the category."
      description: ""
      parameters:
      - name: "categoryId"
        in: "path"
        description: "ID of category"
        required: true
        type: integer
      - in: "body"
        name: "body"
        required: true
        description: "Array of asset UUIDs"
        schema:
          type: array
          items:
            type: string
      responses:
        200:
          description: "Category"
          schema:
            $ref: "#/definitions/CategoryResponse"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Category not found"
  /assets/:
    get:
      tags:
      - "assets"
      summary: "Returns a list of all assets"
      responses:
        200:
          description: "List of assets"
          schema:
            required:
            - name
            - asset_uuid
            - issuer
            - amount
            - asset_id
            type: array
            items:
              $ref: "#/definitions/Asset"
        403:
          description: "Not authorized"
  /assets/{assetUuid}:
    get:
      tags:
      - "assets"
      summary: "Gets details of a given asset"
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "Asset"
          schema:
            $ref: "#/definitions/Asset"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/issue:
    post:
      tags:
      - "assets"
      summary: "Issues a new asset"
      description: "Issue an asset on the Liquid Network. If is_reissuable is
        true then reissuance_amount and reissuance_address must be provided, and
         reissuance_address must be different from destination_address. Name,
         ticker, domain and pubkey are committed to the issuance transaction,
         thus they cannot be changed later. Both destination_address and
         reissuance_address must be confidential"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        required: true
        schema:
          $ref: '#/definitions/Issuance'
      responses:
        201:
          description: "Asset Issuance"
          schema:
            $ref: '#/definitions/IssuanceResponse'
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
  /assets/{assetUuid}/edit:
    put:
      tags:
      - "assets"
      summary: "Updates an existing asset"
      description: "The only field that can be updated is the asset's
        authorization endpoint."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        schema:
          properties:
            authorizer_endpoint:
              type: string
      responses:
        200:
          description: "Assets"
          schema:
            $ref: "#/definitions/Asset"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/delete:
    delete:
      tags:
      - "assets"
      summary: "Deletes the given asset and any associated relational data."
      description: "The deletion cannot be undone. Deletion does not affect the
        underlying asset on the Liquid blockchain, neither does it destroy an
        issued asset amount. Use with caution for assets accidentally issued."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        204:
          description: "Successful delete"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/categories/add:
    post:
      tags:
      - "assets"
      summary: "Add investor category or list of categories to an asset"
      description: "An asset can be assigned one or more investor categories\n
        There must be Categories set up (you can use the
        /categories/add API) before they can be assigned to an asset."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        description: "Array of Category IDs"
        schema:
          type: array
          example: [1, 2]
          items:
            type: integer
      responses:
        200:
          description: "Asset"
          schema:
            $ref: "#/definitions/Asset"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/categories/delete:
    delete:
      tags:
      - "assets"
      summary: "Remove investor category or list of categories from asset"
      description: "Used to remove existing investor categories from an asset."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        description: "Array of Category IDs"
        schema:
          type: array
          example: [1, 2]
          items:
            type: integer
      responses:
        200:
          description: "Asset"
          schema:
            $ref: "#/definitions/Asset"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/register:
    get:
      tags:
      - "assets"
      summary: "Registers the asset with the Blockstream Asset Registry"
      description: "Registers the asset if the requirements are satisifed.\n\n
        The asset registry allows you to register an asset and prove ownership
        against a domain name.\nThe asset needs to have a ticker, domain and
        pubkey.\nFor more information see: https://docs.blockstream.com/liquid/
        developer-guide/developer-guide-index.html
        #proof-of-issuance-blockstream-s-liquid-asset-registry"
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "Asset"
          schema:
            $ref: "#/definitions/Asset"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/register-authorized:
    get:
      tags:
      - "assets"
      summary: "Register authorization with Blockstream Green"
      description: "Authorizes the asset within Green to be handled by Green's
        wallet control features. Allows whitelisting etc."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "Asset"
          schema:
            $ref: "#/definitions/Asset"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/activities:
    get:
      tags:
      - "assets"
      summary: "List of confirmed blockchain asset activities"
      description: "Returned activities can be of type: issuance, reissuance,
        distribution, transactions.
        Results are paged and sortable. See parameter notes for details of use.
        The start parameter is 1 (not zero) based to make paging easier for
        clients.
        start=1, count=50 should return activities list indexes 0 to 49.
        start=51, count=50 should return activities list indexes 50 to 99.
        a negative value can be provided to return from the end of the list.
        Height_start and height_stop will filter and return only activites
        confirmed between these block heights.
        If there are lost outputs, we will include them in this list."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "query"
        name: "start"
        type: "integer"
        description: "Start index for pagination"
        required: false
        default: 1
      - in: "query"
        name: "count"
        type: "integer"
        description: "Number of results per call"
        required: false
        default: 100000
      - in: "query"
        name: "sortcolumn"
        type: "string"
        description: "The sortcolumn parameter can either be an index number
          (starting at 1) or the string name of the column. "
        required: false
        default: 1
      - in: "query"
        name: "sortorder"
        type: "string"
        description: "The sortorder parameter can either be asc (for ascending)
          or desc (for descending) and defaults to asc if the parameter is not
          included."
        required: false
        default: "asc"
      - in: "query"
        name: "height_start"
        type: "integer"
        description: "Start block height for filtering."
        required: false
        default: 1
      - in: "query"
        name: "height_stop"
        type: "integer"
        description: "Stop block height for filtering."
        required: false
        default: 21000000
      responses:
        200:
          description: "List of Asset activities"
          schema:
            type: array
            items:
              $ref: "#/definitions/Activity"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/ownerships:
    get:
      tags:
      - "assets"
      summary: "List of asset ownership at a given point in time"
      description: "Returns ownership distribution.\n\nOwnership point in time
        is based upon the confirmation height of the associated transaction.\n\n
        Warning: if some lost outputs are present the values may be incorrect."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "query"
        name: "height"
        type: "integer"
        description: "If provided the height parameter must be a valid Liquid
          block height else height will be set to the last Liquid block.
          Example: height=100."
        required: false
      responses:
        200:
          description: "List of Asset ownerships based upon confirmed
            transactions."
          schema:
            type: array
            items:
              $ref: "#/definitions/Ownership"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/balance:
    get:
      tags:
      - "assets"
      summary: "Balance of asset"
      description: "Returns the balance of an asset and the list of outputs that
        the server lost track of. Under normal circumstances, the list of lost
        outputs is empty."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "Balance of an assets."
          schema:
            $ref: "#/definitions/Balance"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/summary:
    get:
      tags:
      - "assets"
      summary: "Summary of asset"
      description: "Returns some statistics on a selected asset."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "Summary of an assets."
          schema:
            $ref: "#/definitions/Summary"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/utxos:
    get:
      tags:
      - "assets"
      summary: "List of asset UTXOs"
      description: "List all UTXOs for the selected asset"
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "List of asset UTXOs"
          schema:
            $ref: "#/definitions/Utxos"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/utxos/blacklist:
    post:
      tags:
      - "assets"
      summary: "Move UTXOs to blacklist"
      description: "Set one or more UTXOs in blacklist"
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        description: "List of UTXOs"
        schema:
          type: array
          items:
            type: object
            properties:
              txid:
                type: string
              vout:
                type: integer
      responses:
        200:
          description: "List of modified UTXOs"
          schema:
            $ref: "#/definitions/Utxos"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/utxos/whitelist:
    post:
      tags:
      - "assets"
      summary: "Move UTXOs to whitelist"
      description: "Set one or more UTXOs in whitelist"
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        description: "List of UTXOs"
        schema:
          type: array
          items:
            type: object
            properties:
              txid:
                type: string
              vout:
                type: integer
      responses:
        200:
          description: "List of modified UTXOs"
          schema:
            $ref: "#/definitions/Utxos"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/treasury-addresses:
    get:
      tags:
      - "assets"
      summary: "List of asset treasury addresses"
      description: "
          List all treasury addresses for the selected asset.\n
          Users of Green Liquid Securities subaccounts must send to one of
          these addresses to send the asset back to the treasury wallet."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "List of treasury addresses"
          schema:
            type: array
            items:
              type: string
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/treasury-addresses/add:
    post:
      tags:
      - "assets"
      summary: "Add treasury addresses"
      description: "Add a list of treasury addresses for the selected asset."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        description: "List of treasury addresses"
        schema:
          type: array
          items:
            type: string
      responses:
        200:
          description: "Success"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/treasury-addresses/delete:
    delete:
      tags:
      - "assets"
      summary: "Remove treasury addresses"
      description: "Remove a list of treasury addresses for the selected asset."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        description: "List of treasury addresses"
        schema:
          type: array
          items:
            type: string
      responses:
        200:
          description: "Success"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/memo:
    get:
      tags:
        - "assets"
      summary: "Get memo for the asset"
      description: ""
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "Text of the memo"
          schema:
            type: string
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/memo/set:
    post:
      tags:
        - "assets"
      summary: "Set memo for the asset"
      description: ""
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        description: "Text of the memo"
        schema:
          type: string
      responses:
        200:
          description: "Success"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/assignments:
    get:
      tags:
      - "assignments"
      summary: "List of asset assignments"
      description: "List of asset assignments."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "query"
        name: "is_distributed"
        type: "boolean"
        description: "Filter on distribution status"
        required: false
      - in: "query"
        name: "has_vested"
        type: "boolean"
        description: "Filter on vesting status"
        required: false
      - in: "query"
        name: "vesting_timestamp_from"
        type: "integer"
        description: "Filter vesting after a specified timestamp (in Unix Epoch time)"
        required: false
      - in: "query"
        name: "investor"
        type: "integer"
        description: "Filter on investor id"
        required: false
      responses:
        200:
          description: "List of Asset Assignments"
          schema:
            type: array
            items:
              $ref: "#/definitions/Assignment"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/assignments/{assignmentId}:
    get:
      tags:
      - "assignments"
      summary: "Gets the details of asset assignment"
      description: "Details of the assignment."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - name: "assignmentId"
        in: "path"
        description: "Id of assignment"
        required: true
        type: "integer"
      responses:
        200:
          description: "Asset Assignment"
          schema:
            $ref: "#/definitions/Assignment"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/assignments/create:
    post:
      tags:
      - "assignments"
      summary: "Create asset assignments"
      description: "
        Create asset assignments. An assignment is an allocation of an amount
        of the asset to an investor.\n
        It is possible to set the value 'ready_for_distribution' to true
        (false), so that the assignment will (not) be included in future
        distributions.\n
        It is possible to specify a 'vesting_timestamp', so that the assignment
        will be included only in distributions created after the corresponding
        date."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        schema:
          required:
          - assignments
          properties:
            assignments:
              type: array
              items:
                $ref: "#/definitions/AssignmentCreate"
      responses:
        200:
          description: "Asset Assignments"
          schema:
            type: array
            items:
              $ref: "#/definitions/Assignment"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/assignments/{assignmentId}/edit:
    put:
      tags:
      - "assignments"
      summary: "Edit asset assignment"
      description: "Allows the amount assigned and the ready_for_distribution
        flag to be amended. You can only have one entry with a
        'ready_for_distribution' value of true and a null 'distribution_uuid'
        value.\n\nSee /assets/{assetUuid}/assignments for description of
        returned fields and available actions."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - name: "assignmentId"
        in: "path"
        description: "Id of assignment"
        required: true
        type: "integer"
      - in: "body"
        name: "body"
        required: true
        schema:
          properties:
            amount:
              type: integer
            ready_for_distribution:
              type: boolean
      responses:
        200:
          description: "Asset Assignment"
          schema:
            $ref: "#/definitions/Assignment"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
      deprecated: true
  /assets/{assetUuid}/assignments/{assignmentId}/lock:
    put:
      tags:
      - "assignments"
      summary: "Lock an asset assignment"
      description: "
        Lock the assignment so that it will not be included in future
        distributions."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - name: "assignmentId"
        in: "path"
        description: "Id of assignment"
        required: true
        type: "integer"
      responses:
        200:
          description: "Asset Assignment"
          schema:
            $ref: "#/definitions/Assignment"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/assignments/{assignmentId}/unlock:
    put:
      tags:
      - "assignments"
      summary: "Unlock an asset assignment"
      description: "
        Unlock the assignment so that it will be included in future
        distributions."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - name: "assignmentId"
        in: "path"
        description: "Id of assignment"
        required: true
        type: "integer"
      responses:
        200:
          description: "Asset Assignment"
          schema:
            $ref: "#/definitions/Assignment"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/assignments/{assignmentId}/delete:
    delete:
      tags:
      - "assignments"
      summary: "Deletes the given assignment."
      description: "Sets the assignment to deleted so it will be excluded from
        future lists and details views etc."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - name: "assignmentId"
        in: "path"
        description: "Id of assignment"
        required: true
        type: "integer"
      responses:
        204:
          description: "Successful delete"
        403:
          description: "Not authorized"
        404:
          description: "Asset or assignment not found"
  /assets/{assetUuid}/distributions:
    get:
      tags:
        - "distributions"
      summary: "List of asset distributions"
      description: "Distributions of assigned amounts of an asset. A
        distribution represents the sending of an asset amount to one or more
        investors. One of more confirmed Liquid transactions represent the
        completion of a distribution. The returned data includes details of
        transaction data and is grouped by distribution_uuid. A distribution may
         span multiple transactions, depending on the number of outputs
         required. The distribution_status field is derived from the status of
         each transaction making up the distribution."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "List of Asset Distributions"
          schema:
            type: array
            items:
              $ref: "#/definitions/Distribution"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/distributions/{distributionUuid}:
    get:
      tags:
      - "distributions"
      summary: "Details of the asset distribution"
      description: "Returns details of the Assets distribution.\n\nSee
        /assets/{assetUuid}/distributions for an explanation of the structure of
        a distribution."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - name: "distributionUuid"
        in: "path"
        description: "UUID of distribution"
        required: true
        type: string
      responses:
        200:
          description: "Asset Distribution details"
          schema:
            $ref: "#/definitions/Distribution"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/distributions/create/:
    get:
      tags:
      - "distributions"
      summary: "Creates an asset distribution."
      description: "An asset must be registered as an authorized asset using the
        register-authorized endpoint before a distribution can begin. Returns
        data to perform a distribution based on assignments. Use
        /assets/{assetUuid}/assignments for a preview of the distribution. Note
        that you must access the Liquid node rpc to perform the distribution.
        Save the returned data to a file and then call
        'python3 liquid-securities-confirm.py -u USERNAME -p PASSWORD
        -n NODE_URL distribute -f FILENAME'. The script creates and sends the
        transaction, it waits until confirmed (2 minutes) and then it calls the
        Liquid Securities API to confirm the distribution."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "Asset Distribution Data"
          schema:
            $ref: "#/definitions/DistributionCreate"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/distributions/{distributionUuid}/confirm:
    post:
      tags:
      - "distributions"
      summary: "Confirm a distribution transaction"
      description: "Warning: this API should not be called directly; use the
        distribution confirm script provided.\nConfirms the distribution
        transaction was made. 'tx_data' is that returned from liquid-cli's
        'gettransaction' method, including surrounding '{' and '}' marks;
        'change_data' is that returned from liquid-cli's 'listunspent' method,
        including surrounding '{' and '}' marks."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - name: "distributionUuid"
        in: "path"
        description: "UUID of distribution"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        required: true
        schema:
          properties:
            tx_data:
              type: object
            change_data:
              type: object
      responses:
        200:
          description: "Asset Distribution"
          schema:
            items:
              $ref: "#/definitions/Distribution"
        403:
          description: "Not authorized"
        404:
          description: "Asset or distribution not found"
  /assets/{assetUuid}/distributions/{distributionUuid}/cancel:
    delete:
      tags:
      - "distributions"
      summary: "Cancel a distribution"
      description: "Cancel an asset distribution. The status of the distribution
        must be 'pending'. Removes the 'distribution_uuid' from pending
        distributions. This essentially returns the distribution to an
        assignment marked as 'ready_for_distribution'."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - name: "distributionUuid"
        in: "path"
        description: "UUID of distribution batch"
        required: true
        type: "integer"
      responses:
        200:
          description: "The distribution was cancelled"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /gaids/{gaid}/validate:
    post:
      tags:
      - "gaids"
      summary: "Validate a GAID"
      description: "GAID identifies an account of a Green wallet, to be valid a
        GAID must be associated with a Liquid Securities account."
      parameters:
      - name: "gaid"
        in: "path"
        description: "Identifier for the Green Liquid Securities subaccount"
        required: true
        type: "string"
      responses:
        200:
          description: ""
          schema:
            $ref: "#/definitions/ValidateGaid"
        400:
          description: "Bad input"
        403:
          description: "Not authorized"
  /gaids/{gaid}/balance:
    get:
      tags:
      - "gaids"
      summary: "Returns a list of asset balances for gaid"
      description: "
          Returns a list of confirmed balances for all assets issued by the
          issuer, for the Blockstream Green Liquid Securities subaccount
          identified by gaid."
      parameters:
      - name: "gaid"
        in: "path"
        description: "Identifier for the Green Liquid Securities subaccount"
        required: true
        type: "string"
      responses:
        200:
          description: "List of balances"
          schema:
            type: array
            items:
              $ref: "#/definitions/GaidBalance"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
  /gaids/{gaid}/balance/{assetUuid}:
    get:
      tags:
      - "gaids"
      summary: "Returns the asset balance for gaid"
      description: "
          Returns the asset confirmed balance for the Blockstream Green Liquid
          Securities subaccount identified by gaid."
      parameters:
      - name: "gaid"
        in: "path"
        description: "Identifier for the Green Liquid Securities subaccount"
        required: true
        type: "string"
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "Balance"
          schema:
            $ref: "#/definitions/GaidBalance"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/reissuances:
    get:
      tags:
      - "assets"
      summary: "List of asset reissuances"
      description: "Details of each Liquid transaction where the associated
        asset was reissued. The reissuance itself would normally be carried out
        by the bash script returned from the reissue-request API endpoint."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      responses:
        200:
          description: "List of Asset reissuances"
          schema:
            type: array
            items:
              $ref: "#/definitions/Reissuance"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/reissue-request:
    post:
      tags:
      - "assets"
      summary: "Requests the json to reissue an asset"
      description: "Request the json that will be passed to the script provided
        to reissue the given amount of the asset. The amount to be reissued
        should be provided and the return value will be a json. The script will
        reissue the stated amount of the asset and post the resulting
        transaction data back to the Liquid Securities API reissue-confim
        endpoint to confirm and register the transaction and increase the
        available supply within Liquid Securities."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        schema:
          properties:
            amount_to_reissue:
              type: integer
      responses:
        200:
          description: "JSON to be passed to reissuance script"
          schema:
            properties:
                command:
                    type: string
                min_supported_client_version:
                    type: integer
                base_url:
                    type: string
                asset_uuid:
                    type: string
                asset_id:
                    type: string
                amount:
                  type: integer
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/reissue-confirm:
    post:
      tags:
      - "assets"
      description: "Warning: you should not need to call this manually, use the
        liquid-securities-confirm.py script provided which will reissue the
        asset and call this API endpoint as part of its execution.\nConfirms the
        reissuance was made."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        schema:
          properties:
            details:
              type: object
            listissuances:
                type: array
                items:
                  type: object
            reissuance_output:
                type: object
      responses:
        200:
          description: "Confirmation of the validity of the reissuance
            transaction."
          schema:
            properties:
              txid:
                type: string
              vin:
                type: integer
              reissuance_amount:
                type: integer
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/burn-request:
    post:
      tags:
      - "assets"
      summary: "Request a burn transaction."
      description: "Returns data to perform a burn transaction. Note that you
        must access the Liquid node rpc to perform the burn. Save the returned
        data to a file and then call 'python3 liquid-securities-confirm.py
        -u USERNAME -p PASSWORD -n NODE_URL burn -f FILENAME'. The script
        creates and sends the transaction, it waits until confirmed (2 minutes)
        and then it calls the Liquid Securities API to confirm the burn."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        schema:
          properties:
            amount:
              type: integer
      responses:
        200:
          description: "Asset Burn Data"
          schema:
            $ref: "#/definitions/BurnCreate"
        400:
          description: "Invalid input"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
  /assets/{assetUuid}/burn-confirm:
    post:
      tags:
      - "assets"
      summary: "Confirm a burn transaction"
      description: "Warning: this API should not be called directly; use the
        burn confirm script provided.\nConfirms the burn transaction was made.
        'tx_data' is that returned from liquid-cli's 'gettransaction' method,
        including surrounding '{' and '}' marks; 'change_data' is that returned
        from liquid-cli's 'listunspent' method, including surrounding '{' and
        '}' marks."
      parameters:
      - name: "assetUuid"
        in: "path"
        description: "UUID of asset"
        required: true
        type: "string"
        format: "uuid"
      - in: "body"
        name: "body"
        required: true
        schema:
          properties:
            tx_data:
              type: object
              properties:
                txid:
                  type: string
            change_data:
              type: array
              items:
                type: "object"
      responses:
        200:
          description: "Correctly recorder"
        403:
          description: "Not authorized"
        404:
          description: "Asset not found"
definitions:
  InvestorAdd:
    required:
      - name
    type: "object"
    properties:
      GAID:
        type: string
        example: "GAEnrGHeqCd5UQ2jTW2Mo32o6a2GG"
        description: "Identifier for the Green Liquid Securities subaccount."
      is_company:
        type: boolean
      name:
        type: string
        minLength: 1
        maxLength: 255
  InvestorResponse:
    type: "object"
    properties:
      id:
        type: integer
      GAID:
        type: string
        description: "Default GAID."
      is_company:
        type: boolean
      name:
        type: string
      categories:
        type: array
        example: [1, 2]
        items:
          type: integer
  InvestorEdit:
    type: "object"
    properties:
      name:
        type: string
  InvestorSummary:
    type: "object"
    properties:
      asset_uuid:
        type: string
      asset_id:
        type: string
      assignments:
        type: array
        items:
          $ref: "#/definitions/Assignment"
      assignments_sum:
        type: integer
      distributions:
        type: array
        items:
          $ref: "#/definitions/Distribution"
      distributions_sum:
        type: integer
      balance:
        type: integer
  ValidateGaid:
    type: "object"
    properties:
      is_valid:
        type: boolean
      error:
        type: string
  CategoryAdd:
    type: "object"
    required:
      - name
    properties:
      name:
        type: string
        minLength: 1
        maxLength: 255
      description:
        type: string
        maxLength: 1023
  CategoryResponse:
    type: "object"
    properties:
      id:
        type: integer
      name:
        type: string
      description:
        type: string
      investors:
        type: array
        example: [1, 2]
        items:
          type: integer
  CategoryEdit:
    type: "object"
    properties:
      name:
        type: string
      description:
        type: string
  Asset:
    type: "object"
    properties:
      name:
        type: string
      asset_uuid:
        type: string
      issuer:
        type: integer
      asset_id:
        type: string
      requirements:
        type: array
        example: [1, 2]
        items:
          type: integer
      ticker:
        type: string
      domain:
        type: string
      pubkey:
        type: string
      is_registered:
        type: boolean
      is_authorized:
        type: boolean
      authorizer_endpoint:
        type: string
      investors_restricted:
        type: boolean
  Assignment:
    type: "object"
    properties:
      id:
        type: integer
      investor:
        type: integer
      amount:
        type: integer
      receiving_address:
        type: string
      distribution_uuid:
        type: string
      ready_for_distribution:
        type: boolean
      vesting_datetime:
        type: string
        format: "date-time"
        description: "Assignment will not be distributed before this date."
      has_vested:
        type: boolean
      is_distributed:
        type: boolean
  AssignmentCreate:
    type: "object"
    properties:
      investor:
        type: integer
      amount:
        type: integer
        minimum: 1
        maximum: 2100000000000000
      ready_for_distribution:
        type: boolean
        default: false
      vesting_timestamp:
        type: integer
        default: null
        description: "
          Vesting timestamp in Unix Epoch time (seconds since the Epoch),
          must be a future timestamp, may be null. Assignment will not be
          distributed before the corresponding date."
    required:
      - investor
      - amount
  Distribution:
    type: object
    properties:
      distribution_uuid:
        type: string
      distribution_status:
        type: string
        enum: [UNCONFIRMED, CONFIRMED]
      transactions:
        type: array
        items:
          $ref: "#/definitions/Transaction"
  Transaction:
    type: object
    properties:
      txid:
        type: string
      transaction_status:
        type: string
        enum: [UNCONFIRMED, CONFIRMED]
      included_blockheight:
        type: integer
      confirmed_datetime:
        type: string
        format: "date-time"
      assignments:
        type: array
        items:
          $ref: "#/definitions/DistributionAssignment"
  DistributionAssignment:
    type: "object"
    properties:
      investor:
        type: integer
      amount:
        type: integer
      vout:
        type: integer
  DistributionCreate:
    type: object
    properties:
      command:
        type: string
        description: "distribute"
      min_supported_client_script_version:
        type: integer
      base_url:
        type: string
      distribution_uuid:
        type: string
      asset_uuid:
        type: string
      asset_id:
        type: string
      map_address_amount:
        type: string
        description: "Map in the form {address: amount, ...}"
      map_address_asset:
        type: string
        description: "Map in the form {address: asset, ...}"
  BurnCreate:
    type: object
    properties:
      command:
        type: string
        description: "burn"
      min_supported_client_script_version:
        type: integer
      base_url:
        type: string
      asset_uuid:
        type: string
      asset_id:
        type: string
      amount:
        type: number
        description: "Amount in BTC"
      utxos:
        description: "List of UTXOs"
        type: array
        items:
          type: object
          properties:
            txid:
              type: string
            vout:
              type: integer
  Activity:
    type: "object"
    properties:
      type:
        type: string
      datetime:
        type: string
        format: 'date-time'
      description:
        type: string
      txid:
        type: string
      vout:
        type: integer
      blockheight:
        type: integer
      investor:
        type: integer
        description: "Id of the investor, if the output is a change this field
          is None"
      amount:
        type: integer
  Ownership:
    type: "object"
    properties:
      owner:
        type: string
        description: "Id of the owner, if the owner is the issuer, this field is
          the string 'ISSUER'"
      amount:
        type: integer
      GAID:
        type: string
  Outpoint:
    type: "object"
    properties:
      txid:
        type: string
      vout:
        type: integer
  Balance:
    type: "object"
    properties:
      confirmed_balance:
        type: array
        items:
          $ref: "#/definitions/Ownership"
      lost_outputs:
        description: "List of output which the server has lost track of."
        type: array
        items:
          $ref: "#/definitions/Outpoint"
      reissuance_lost_outputs:
        description: "List of output which the server has lost track of (for
          reissuance token)."
        type: array
        items:
          $ref: "#/definitions/Outpoint"
  Summary:
    type: "object"
    properties:
      asset_id:
        type: string
        description: "Asset id in hexadecimal format"
      reissuance_token_id:
        type: string
        description: "Reissuance token id in hexadecimal format (null if not
          reissuable)"
      issued:
        type: integer
        description: "Total issued tokens"
      reissued:
        type: integer
        description: "Total reissued tokens"
      assigned:
        type: integer
        description: "Total assigned and not distributed tokens"
      distributed:
        type: integer
        description: "Total distributed tokens"
      burned:
        type: integer
        description: "Total burned tokens"
      investors:
        type: integer
        description: "Number of eligible investors"
      active_investors:
        type: integer
        description: "Number of investors with a positive wallet balance"
      active_green_subaccounts:
        type: integer
        description: "Number of Green Liquid Securities subaccounts with a
          positive balance"
      reissuance_tokens":
        type: integer
        description: "Total reissuance tokens"
  Issuance:
    type: "object"
    properties:
      name:
        type: string
        minLength: 5
        maxLength: 255
        description: "Must be ASCII"
      amount:
        type: integer
        minimum: 1
        maximum: 2100000000000000
      destination_address:
        type: string
        description: "Must be a valid Liquid address"
      domain:
        type: string
        minLength: 4
        maxLength: 255
        description: "Domain for asset registry"
      ticker:
        type: string
        minLength: 3
        maxLength: 5
        description: "Ticker for asset registry"
      pubkey:
        type: string
        maxLength: 66
        minLength: 66
        description: "Pubkey for asset registry, must be a compressed pubkey in
          hex"
      is_confidential:
        type: boolean
        default: false
      is_reissuable:
        type: boolean
        default: false
      reissuance_amount:
        type: integer
        default: 0
        minimum: 0
        maximum: 2100000000000000
      reissuance_address:
        type: string
        default: "\"\""
        description: "Must be a valid Liquid address or the empty string"
      investors_restricted:
        type: boolean
        default: true
        description: "
            If true, the asset can be transferred only between investors
            registered by the issuer, with a Green Liquid Securities account
            associated to them.\n
            If false, the asset can be transferred only between Green Liquid
            Securities accounts. This second option enforces weaker rules, as
            anyone could create a Green Liquid Securities account, and then
            receive the asset.\n
            In both cases, the asset can also be received by or sent to the
            treasury wallet."
    required:
      - name
      - amount
      - destination_address
      - domain
      - ticker
      - pubkey
  IssuanceResponse:
    type: "object"
    properties:
      name:
        type: string
      amount:
        type: integer
      destination_address:
        type: string
      domain:
        type: string
      ticker:
        type: string
      pubkey:
        type: string
      is_confidential:
        type: boolean
      is_reissuable:
        type: boolean
      reissuance_amount:
        type: integer
      reissuance_address:
        type: string
      asset_id:
        type: string
        minLength: 64
        maxLength: 64
        description: "Asset id of the newly generated asset in hex"
      reissuance_token_id:
        type: string
        minLength: 64
        maxLength: 64
        description: "Reissuance token id of the newly generated asset in hex,
          may be null"
      asset_uuid:
        type: string
        minLength: 36
        maxLength: 36
        description: "Asset UUID used by the server"
      txid:
        minLength: 64
        maxLength: 64
        type: string
        description: "Issuance transaction id"
      vin:
        type: integer
        description: "Issuance transaction input"
      asset_vout:
        type: integer
        description: "Issuance transaction output for newly created assets"
      reissuance_vout:
        type: integer
        description: "Issuance transaction output for newly created reissuance
          tokens, may be null"
      authorizer_endpoint:
         type: string
         description: "Currently unused."
      investors_restricted:
        type: boolean
        description: "If false allow sharing tokens with investors not
          recorded in platform."
      issuance_assetblinder:
        type: string
        minLength: 64
        maxLength: 64
        description: "Issuance asset amount blinder. Is '00..00' if the issuance
          is not confidential."
      issuance_tokenblinder:
        type: string
        minLength: 64
        maxLength: 64
        description: "Issuance token amount blinder. Is null if the issuance is
          not reissuable. Is '00..00' if the issuance is reissuable and not
          confidential."
  Reissuance:
    type: "object"
    properties:
      txid:
        type: string
      vout:
        type: integer
      destination_address:
        type: string
      reissuance_amount:
        type: integer
      confirmed_in_block:
        type: string
      created:
        type: string
        format: 'date-time'
  Utxos:
    type: array
    items:
      $ref: "#/definitions/Utxo"
  Utxo:
    type: "object"
    properties:
      txid:
        type: string
      vout:
        type: integer
      asset:
        type: string
      amount:
        type: integer
      investor:
        type: integer
      gaid:
        type: string
      blacklisted:
        type: boolean
  GaidBalance:
    type: "object"
    properties:
      asset_id:
        type: string
      asset_uuid:
        type: string
      balance:
        type: integer