developers:admin:walktrhough

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
developers:admin:walktrhough [2025/04/24 20:18] – created chaddevelopers:admin:walktrhough [2025/04/24 21:13] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== User Creation API ======+====== Integration Walkthrough ====== 
 + 
 +This walkthrough demonstrates the process for integrating with the T4 backend to create user accounts for third-party applications.
  
-The User Creation API provides endpoints for creating and managing users on the T4 platform. This documentation outlines the step-by-step process required to set up new users through the API. 
  
 ===== Overview ===== ===== Overview =====
Line 12: Line 13:
   * Step 4: User signs EULAs   * Step 4: User signs EULAs
  
-Each step must be completed in sequence to ensure proper user setup.+The order of these steps is important.
  
 ===== Default User and Account ===== ===== Default User and Account =====
Line 18: Line 19:
 New users and accounts are created using the firm default user and account as a template. Proper configuration of the firm default will simplify integration by reducing the amount of customization needed for each new user. New users and accounts are created using the firm default user and account as a template. Proper configuration of the firm default will simplify integration by reducing the amount of customization needed for each new user.
  
-**Note:** For different user types, you can override the default by using the ''templateUser'' or ''templateAccount'' parameter, allowing unlimited pre-configured user and account defaults.+<bootnote> 
 +For different user types, you can override the default by using the ''templateUser'' or ''templateAccount'' parameter, allowing unlimited pre-configured user and account defaults. 
 +</bootnote>
  
 ===== Step 1: Create User Account ===== ===== Step 1: Create User Account =====
Line 24: Line 27:
 This endpoint creates a base user profile in the system. This endpoint creates a base user profile in the system.
  
 +''POST https://api-sim.t4login.com/admin/users''
 ==== Request ==== ==== Request ====
  
Line 114: Line 118:
 </code> </code>
  
-**Important:** Make note of the ''userID'' value in the response. This will be needed for Step 2.+<bootnote important> 
 +Make note of the ''userID'' value in the response. This will be needed for Step 2. 
 +</bootnote> 
 + 
  
 ===== Step 2: Create Trading Account ===== ===== Step 2: Create Trading Account =====
Line 120: Line 128:
 This endpoint creates a trading account and links it to the user created in Step 1. This endpoint creates a trading account and links it to the user created in Step 1.
  
 +''POST http://api-sim.t4login.com/admin/v1/accounts''
 ==== Request ==== ==== Request ====
  
Line 235: Line 244:
  
 This step configures the market data feeds accessible to the user. This step configures the market data feeds accessible to the user.
 +
 +''GET https://api-sim.t4login.com/admin/v1/users/{USERID}/marketdata''
 +
 +''PATCH https://api-sim.t4login.com/admin/v1/users/{USERID}/marketdata''
 +
 +
 +We bill for market data based on the selection made in this step. Therefore these values are not copied from a default or template user.
 +
 +How to proceed with this step depends on how you plan to assign market data to a user:
 +
 +  - All users get a specific exchange(s) by default.
 +  - User is presented with an interface to choose.
 +
 +
 +==== Step 3a: Fixed Market Data Selection ====
 +
 +In this case, simply PATCH the same Json for all users.
 +
  
 ==== Request ==== ==== Request ====
Line 240: Line 267:
 <code> <code>
 { {
-  // Market data selection configuration + "updates":
-  // Documentation coming soon+   { 
 +     "clearingExchange": "CME", 
 +     "marketDataType": "Depth" 
 +   } 
 + ]
 } }
 </code> </code>
 +
 +==== Response ====
 +
 +<code>
 +{
 +    "data": {
 +        "exchangeMarketData": [
 +            {
 +                "clearingExchange": "CBOT",
 +                "description": "CBOT",
 +                "marketDataType": "None",
 +                "options": [
 +                    {
 +                        "type": "TOB",
 +                        "description": "Top Of Book",
 +                        "fee": 3.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Depth",
 +                        "description": "Depth",
 +                        "fee": 12.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Delayed",
 +                        "description": "Delayed",
 +                        "currency": "USD"
 +                    }
 +                ],
 +                "hasExecutingAccount": true
 +            },
 +            {
 +                "clearingExchange": "CFE",
 +                "description": "CFE",
 +                "marketDataType": "None",
 +                "options": [
 +                    {
 +                        "type": "TOB",
 +                        "description": "Top Of Book",
 +                        "fee": 8.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Depth",
 +                        "description": "Depth",
 +                        "fee": 16.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Delayed",
 +                        "description": "Delayed",
 +                        "currency": "USD"
 +                    }
 +                ],
 +                "hasExecutingAccount": true
 +            },
 +            {
 +                "clearingExchange": "CME",
 +                "description": "CME",
 +                "marketDataType": "None",
 +                "options": [
 +                    {
 +                        "type": "TOB",
 +                        "description": "Top Of Book",
 +                        "fee": 3.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Depth",
 +                        "description": "Depth",
 +                        "fee": 12.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Delayed",
 +                        "description": "Delayed",
 +                        "currency": "USD"
 +                    }
 +                ],
 +                "hasExecutingAccount": true
 +            },
 +
 +             ...            
 +             
 +        ],
 +        "totalCount": 40
 +    },
 +    "metadata": {
 +        "timestamp": "2025-04-24T18:05:55.0110086Z",
 +        "requestId": "0HNC3B7647GLB:00000007"
 +    }
 +}
 +</code>
 +
 +
 +
 +
 +==== Step 3d: Dynamic Market Data Selection ====
 +
 +Call the GET endpoint to get the available options and associated fees in a document that you can build an interface with.
 +
 +==== Response ====
 +
 +<code>
 +{
 +    "data": {
 +        "exchangeMarketData": [
 +            {
 +                "clearingExchange": "CBOT",
 +                "description": "CBOT",
 +                "marketDataType": "None",
 +                "options": [
 +                    {
 +                        "type": "TOB",
 +                        "description": "Top Of Book",
 +                        "fee": 3.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Depth",
 +                        "description": "Depth",
 +                        "fee": 12.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Delayed",
 +                        "description": "Delayed",
 +                        "currency": "USD"
 +                    }
 +                ],
 +                "hasExecutingAccount": true
 +            },
 +            {
 +                "clearingExchange": "CFE",
 +                "description": "CFE",
 +                "marketDataType": "None",
 +                "options": [
 +                    {
 +                        "type": "TOB",
 +                        "description": "Top Of Book",
 +                        "fee": 8.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Depth",
 +                        "description": "Depth",
 +                        "fee": 16.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Delayed",
 +                        "description": "Delayed",
 +                        "currency": "USD"
 +                    }
 +                ],
 +                "hasExecutingAccount": true
 +            },
 +            {
 +                "clearingExchange": "CME",
 +                "description": "CME",
 +                "marketDataType": "None",
 +                "options": [
 +                    {
 +                        "type": "TOB",
 +                        "description": "Top Of Book",
 +                        "fee": 3.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Depth",
 +                        "description": "Depth",
 +                        "fee": 12.0,
 +                        "currency": "USD"
 +                    },
 +                    {
 +                        "type": "Delayed",
 +                        "description": "Delayed",
 +                        "currency": "USD"
 +                    }
 +                ],
 +                "hasExecutingAccount": true
 +            },
 +
 +             ...            
 +             
 +        ],
 +        "totalCount": 40
 +    },
 +    "metadata": {
 +        "timestamp": "2025-04-24T18:05:55.0110086Z",
 +        "requestId": "0HNC3B7647GLB:00000007"
 +    }
 +}
 +</code>
 +
 +
 +
 +
 +
  
 ===== Step 4: User Signs EULAs ===== ===== Step 4: User Signs EULAs =====
Line 249: Line 480:
 This step completes the user creation process by confirming acceptance of required End User License Agreements. This step completes the user creation process by confirming acceptance of required End User License Agreements.
  
-==== Request ====+''GET https://api-sim.t4login.com/admin/v1/users/{USERID}/eula'' 
 +''POST https://api-sim.t4login.com/admin/v1/users/{USERID}/eula'' 
 + 
 +Always GET the lastest EULA document before POST'ing for the user. 
 + 
 +The GET response includes a "signatureTemplate". Use this and add timestamps to POST the EULA for the user. 
 + 
 +<bootnote critical> 
 +The user will not be able to log into the T4 system without valid signed EULA document. 
 +</bootnote> 
 + 
 + 
 +==== GET Response ====
  
 <code> <code>
 { {
-  // EULA acceptance configuration +    "data":
-  // Documentation coming soon+        "documents":
 +            { 
 +                "documentName": "LegalEULA", 
 +                "title": "End User License Agreement", 
 +                "url": "https://admin.sim.t4login.com/disclaimers/EULA_Updated_Plus500US_Futures_Technologies_2025-02.pdf" 
 +            }, 
 +            { 
 +                "documentName": "LegalPP", 
 +                "title": "Privacy Policy", 
 +                "url": "https://futures-technologies.plus500.com/privacy-policy/" 
 +            }, 
 +            { 
 +                "documentName": "LegalMDSA", 
 +                "title": "Market Data Subscription Agreement", 
 +                "url": "https://admin.sim.t4login.com/disclaimers/MDSA.html" 
 +            }, 
 +            { 
 +                "documentName": "LegalUSA", 
 +                "title": "Uniform Subscriber Addendum", 
 +                "url": "https://admin.sim.t4login.com/disclaimers/USA.html" 
 +            }, 
 +            { 
 +                "documentName": "LegalNPSCF", 
 +                "title": "Non-Professional Self-Certification Form", 
 +                "url": "https://admin.sim.t4login.com/disclaimers/NPSCF.html", 
 +                "nonProfessionalOnly": true 
 +            }, 
 +            { 
 +                "documentName": "CMEInformationLicenseAgreement", 
 +                "title": "CME Information License Agreement", 
 +                "url": "https://admin.sim.t4login.com/disclaimers/CME%20information-license-agreement-september-2024.pdf" 
 +            }, 
 +            { 
 +                "documentName": "ICESubscriberAgreement", 
 +                "title": "ICE Subscriber Agreement", 
 +                "url": "https://admin.sim.t4login.com/disclaimers/ICE_Subscriber_Addendum.pdf" 
 +            } 
 +        ], 
 +        "lastUserSignature":
 +            "signatures": [] 
 +        }, 
 +        "signatureTemplate":
 +            "collectedBy": "", 
 +            "eulaVersion": "2", 
 +            "signatures":
 +                { 
 +                    "documentName": "LegalEULA", 
 +                    "signed": null 
 +                }, 
 +                { 
 +                    "documentName": "LegalPP", 
 +                    "signed": null 
 +                }, 
 +                { 
 +                    "documentName": "LegalMDSA", 
 +                    "signed": null 
 +                }, 
 +                { 
 +                    "documentName": "LegalUSA", 
 +                    "signed": null 
 +                }, 
 +                { 
 +                    "documentName": "LegalNPSCF", 
 +                    "signed": null 
 +                }, 
 +                { 
 +                    "documentName": "CMEInformationLicenseAgreement", 
 +                    "signed": null 
 +                }, 
 +                { 
 +                    "documentName": "ICESubscriberAgreement", 
 +                    "signed": null 
 +                } 
 +            ] 
 +        }, 
 +        "isNonProfessional": true 
 +    }, 
 +    "metadata":
 +        "timestamp": "2025-04-24T18:04:18.1844784Z", 
 +        "requestId": "0HNC3B7647GLB:00000004" 
 +    }
 } }
 </code> </code>
  
-===== User Creation Flowchart ===== 
  
-{{:api:user_creation_flow.png|User Creation Flow Diagram}}+==== POST Request ====
  
-===== Common Parameters =====+<code> 
 +
 +        "collectedBy": "", 
 +        "eulaVersion": "2", 
 +        "signatures":
 +            { 
 +                "documentName": "LegalEULA", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "LegalPP", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "LegalMDSA", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "LegalUSA", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "LegalNPSCF", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "CMEInformationLicenseAgreement", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "ICESubscriberAgreement", 
 +                "signed": "2025-04-24T09:17:15" 
 +            } 
 +        ] 
 +    }, 
 +    "isNonProfessional": false 
 +
 +</code> 
 + 
 +==== Response ==== 
 + 
 +<code> 
 +
 +    "data":
 +        "collectedBy": "API", 
 +        "eulaVersion": "2", 
 +        "signatures":
 +            { 
 +                "documentName": "LegalEULA", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "LegalPP", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "LegalMDSA", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "LegalUSA", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "LegalNPSCF", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "CMEInformationLicenseAgreement", 
 +                "signed": "2025-04-24T09:17:15" 
 +            }, 
 +            { 
 +                "documentName": "ICESubscriberAgreement", 
 +                "signed": "2025-04-24T09:17:15" 
 +            } 
 +        ] 
 +    }, 
 +    "metadata":
 +        "timestamp": "2025-04-24T18:04:54.942152Z", 
 +        "requestId": "0HNC3B7647GLB:00000006" 
 +    } 
 +
 +</code> 
 +==== Request ==== 
 + 
 +<code> 
 +
 +  // EULA acceptance configuration 
 +  // Documentation coming soon 
 +
 +</code>
  
-^ Parameter ^ Description ^ Type ^ Required ^ 
-| username | Unique identifier for the user | String | Yes | 
-| account | Trading account identifier | String | Yes | 
-| templateUser | Optional user template override | String | No | 
-| templateAccount | Optional account template override | String | No | 
-| apptype | User market data permissions type | String | Yes | 
  
-===== Common Response Codes ===== 
  
-^ Code ^ Description ^ 
-| 200 | Success | 
-| 400 | Bad Request - Check request format | 
-| 401 | Unauthorized - Authentication failed | 
-| 404 | Not Found - Resource doesn't exist | 
-| 500 | Server Error - Contact support | 
  
 ===== Support ===== ===== Support =====
  • developers/admin/walktrhough.1745525887.txt.gz
  • Last modified: 2025/04/24 20:18
  • by chad