API Specification
The following FIB API endpoints are available for implementation into the code of your own application or system:
auth-controller
wallet-controller
peer-controller
contribution-controller
premium-provider-controller
From 6ecb4adcbd29960418c0cf084b1ca42fb10d2078 Mon Sep 17 00:00:00 2001
From: C4tWithShell
404
But if you don't change your direction, and if you keep looking, you may end up where you are heading.
The following FIB API endpoints are available for implementation into the code of your own application or system:
auth-controller
wallet-controller
peer-controller
contribution-controller
premium-provider-controller
Protocol: HTTP
Encoding: JSON
Endpoint: /auth/api/v1/authentication-management/session
Method: POST
Parameters: —
Input/request structure:
{
+ email: 'string', //The user’s email address
+ signature: 'string', //The encoded signature of a user’s email address
+ publicKey: 'string' //The public key of the authentication key pair
+}
{
+ email: 'string', //The user’s email address
+ signature: 'string', //The encoded signature of a user’s email address
+ publicKey: 'string' //The public key of the authentication key pair
+}
Note
For instructions on how to generate signature
and publicKey
strings, see Generating key pairs and Signing user email addresses.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ accessToken: 'string',
+ refreshToken: 'string',
+ expirationTime: 0 //integer($int64)
+ }
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ accessToken: 'string',
+ refreshToken: 'string',
+ expirationTime: 0 //integer($int64)
+ }
+}
Response Code | Description |
---|---|
200 | User authorization has been successful. |
401 | User signature is incorrect or failed to be decoded. |
404 | User not found. |
422 | User signature either could not be decoded or verified, or the publicKey string is not valid. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /auth/api/v1/authentication-management/session
Method: PATCH
Header: Authorization
is represented by a string
that is the refreshToken
value that was returned either at the authorization, or the previous time the token has been refreshed.
Parameters: —
Input/request structure:
A PATCH
request to the endpoint, where the Authorization
header is required.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ accessToken: 'string',
+ refreshToken: 'string',
+ expirationTime: 0 //integer($int64)
+ }
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ accessToken: 'string',
+ refreshToken: 'string',
+ expirationTime: 0 //integer($int64)
+ }
+}
Response Code | Description |
---|---|
200 | Authentication tokens have been refreshed successfully. |
401 | Either the signature or refresh token are not valid, or the Bearer token could not be parsed from the Authorization header. |
404 | User not found. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /auth/api/v1/authentication-management/salt
Method: GET
Parameters: —
Input/request structure:
A GET
request to the endpoint.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: 'string'
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: 'string'
+}
Response Code | Description |
---|---|
200 | Deterministic salt persisted on the blockchain has been retrieved successfully. |
404 | User not found. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/contribution-manager/contribution/flag/assemble
Method: PATCH
Parameters: —
Input/request structure:
{
+ assetIds: [
+ {
+ definitionId: 'Id_range#domain', //IP/telephone number/IMEI
+ accountId: 'user@peerId'
+ }
+ ]
+}
{
+ assetIds: [
+ {
+ definitionId: 'Id_range#domain', //IP/telephone number/IMEI
+ accountId: 'user@peerId'
+ }
+ ]
+}
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: 'string'
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: 'string'
+}
Response Code | Description |
---|---|
200 | Contribution flag has been assembled and its transaction data has been retrieved successfully. |
400 | The request body of the contribution flag is incorrect or premium contribution can't be changed. |
404 | Asset not found. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/contribution-management/contribution/assemble
Method: POST
Parameters: —
Input/request structure:
[
+ {
+ id: 'string', //fraud identifier value
+ fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
+ origination: 'string', //two-digit country code (Alpha-2, ISO 3166)
+ destination: 'string', //two-digit country code (Alpha-2, ISO 3166)
+ expiryDate: 0 //integer($int32), Unix Epoch Time in seconds
+ }
+]
[
+ {
+ id: 'string', //fraud identifier value
+ fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
+ origination: 'string', //two-digit country code (Alpha-2, ISO 3166)
+ destination: 'string', //two-digit country code (Alpha-2, ISO 3166)
+ expiryDate: 0 //integer($int32), Unix Epoch Time in seconds
+ }
+]
Note
This endpoint accepts requests with up to 500
entries.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: 'string'
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: 'string'
+}
Response Code | Description |
---|---|
200 | Contribution has been assembled and its transaction data has been retrieved successfully. |
400 | Contribution type is invalid. |
404 | Account not found or the rewards table doesn't exist. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/contribution-management/contribution/flag
Method: PATCH
Parameters: —
Input/request structure:
'string'
'string'
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ rewarded: 0 //integer($int32)
+ }
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ rewarded: 0 //integer($int32)
+ }
+}
Response Code | Description |
---|---|
200 | Contribution has been flagged and its transaction data has been retrieved successfully. |
400 | Invalid transaction. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/contribution-management/contribution/{contributionID}
Method: GET
Parameters:
Field | Value Type | Description |
---|---|---|
contributionID | string(path) | Range of id values (Fraud Identifiers), or a single one. |
Input/request structure:
A GET
request to the endpoint, where {contributionID}
is a required parameter.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: [
+ {
+ assetIds: [
+ {
+ definitionId: 'Id_range#domain', //IP/telephone number/IMEI
+ accountId: 'user@peerId'
+ }
+ ]
+ }
+ ]
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: [
+ {
+ assetIds: [
+ {
+ definitionId: 'Id_range#domain', //IP/telephone number/IMEI
+ accountId: 'user@peerId'
+ }
+ ]
+ }
+ ]
+}
Response Code | Description |
---|---|
200 | Contribution has been successfully retrieved by its ID. |
400 | Contribution ID is incorrect or the fraud type could not be resolved by code. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/contribution-management/contribution
Method: GET
Parameters:
Field | Value Type | Description |
---|---|---|
size | integer($int32) | The number of entries, starting with the latest, shown in the response. Set to 50 by default. |
from and to | string | The timeframe that the response entries are filtered by (set as Unix Epoch time in seconds). The from parameter is set to 0 by default. |
ft | array[string] | The type of the fraud event. Could be one of the following:
|
org | array[string] | The country of origination of the fraud event. Set as a two-digit country code (Alpha-2, ISO 3166; e.g., US, GA) |
self-only | boolean | A boolean that defines whether the response should only contain contributions submitted by the requesting peer. The self-only parameter is set to false by default. |
fetch-mode | string | The parameter that filters the response entries based on whether the requesting user has already seen them. Could be one of the following:
DEFAULT — includes all of the entries.The fetch-mode parameter is set to DEFAULT by default. |
fetch-mode | string | The parameter that filters the response entries based on whether the requesting user has already seen them. Could be one of the following:
The fetch-mode parameter is set to DEFAULT by default. |
confidence-score | boolean | A boolean that defines whether the price of the retrieved contributions is affected by the confidence index. If set to true , the price of any given contribution is expected to rise above the default conversion rate. The confidence-score parameter is set to false by default. |
Input/request structure:
A GET
request to the endpoint.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ contributions: [
+ {
+ id: 'string',
+ fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
+ origination: 'string',
+ destination: 'string',
+ expiryDate: 0, //integer($int32)
+ fraudStatus: 'string(enum)', //Could be one of the following: Active, Expired, Flagged
+ confidenceIndex: 0, //number($double)
+ isPremium: true, //boolean
+ peerId: 'string',
+ flagger: 'string',
+ premium: true //boolean
+ }
+ ],
+ details: {
+ self: 0,
+ old: 0,
+ new: 0,
+ creditsSpent: 0
+ }
+ }
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ contributions: [
+ {
+ id: 'string',
+ fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
+ origination: 'string',
+ destination: 'string',
+ expiryDate: 0, //integer($int32)
+ fraudStatus: 'string(enum)', //Could be one of the following: Active, Expired, Flagged
+ confidenceIndex: 0, //number($double)
+ isPremium: true, //boolean
+ peerId: 'string',
+ flagger: 'string',
+ premium: true //boolean
+ }
+ ],
+ details: {
+ self: 0,
+ old: 0,
+ new: 0,
+ creditsSpent: 0
+ }
+ }
+}
Response Code | Description |
---|---|
200 | Contributions have been successfully retrieved and filtered by the specified parameters. |
400 | Request parameters are invalid or the fraud type could not be resolved by code. |
404 | Contribution subscription has not been found. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/contribution-management/contribution
Method: POST
Parameters: —
Input/request structure:
'string'
'string'
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ tokenIds: [
+ {
+ definitionId: 'Id_range#domain', //IP/telephone number/IMEI
+ accountId: 'user@peerId'
+ }
+ ],
+ rewarded: 0 //integer($int32)
+ }
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ tokenIds: [
+ {
+ definitionId: 'Id_range#domain', //IP/telephone number/IMEI
+ accountId: 'user@peerId'
+ }
+ ],
+ rewarded: 0 //integer($int32)
+ }
+}
Response Code | Description |
---|---|
200 | Contribution has been submitted and its transaction data has been retrieved successfully. |
400 | Invalid transaction. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/peer-management/details
Method: GET
Parameters: —
Input/request structure:
A GET
request to the endpoint.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ accountId: 'string',
+ domainId: 'string',
+ accountMetadata: {
+ additionalProp1: {},
+ additionalProp2: {},
+ additionalProp3: {}
+ },
+ domainMetadata: {
+ additionalProp1: {},
+ additionalProp2: {},
+ additionalProp3: {}
+ }
+ }
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ accountId: 'string',
+ domainId: 'string',
+ accountMetadata: {
+ additionalProp1: {},
+ additionalProp2: {},
+ additionalProp3: {}
+ },
+ domainMetadata: {
+ additionalProp1: {},
+ additionalProp2: {},
+ additionalProp3: {}
+ }
+ }
+}
Response Code | Description |
---|---|
200 | Peer details have been retrieved successfully. |
404 | User/domain/account/asset not found. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /auth/api/v1/peer-management/premium
Method: GET
Parameters: —
Input/request structure:
A GET
request to the endpoint.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: [
+ {
+ peerId: 'string' //A unique identifier of a peer
+ }
+ ]
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: [
+ {
+ peerId: 'string' //A unique identifier of a peer
+ }
+ ]
+}
Response Code | Description |
---|---|
200 | All premium peers have been retrieved successfully. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/peer-management/limit
Method: GET
Parameters: —
Input/request structure:
A GET
request to the endpoint.
Output/response structure:
{
+ status: {
+ code: 0,
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ used: 0,
+ total: 0,
+ updatePeriod: 0,
+ nextUpdate: 0
+ }
+}
{
+ status: {
+ code: 0,
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ used: 0,
+ total: 0,
+ updatePeriod: 0,
+ nextUpdate: 0
+ }
+}
Response Code | Description |
---|---|
200 | Peer limit status has been retrieved successfully |
404 | Metadata key not found or Trigger's period not specified |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/premium-provider-management/application?peer={peerID}
Method: POST
Parameters:
Field | Value Type | Description |
---|---|---|
peer | string | A unique peer identifier. peer is a required parameter. See Retrieving all premium peer. |
Input/request structure:
A POST
request to the endpoint, where peer
is a unique peer identifier.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: [
+ {
+ domainId: 'string',
+ requestedByPeer: 'string',
+ status: 'PENDING' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
+ }
+ ]
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: [
+ {
+ domainId: 'string',
+ requestedByPeer: 'string',
+ status: 'PENDING' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
+ }
+ ]
+}
Response Code | Description |
---|---|
200 | Access to premium contributions by a certain peer has been requested. |
400 | The Entity field is not set. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/premium-provider-management/incoming
Method: GET
Parameters: —
Input/request structure:
A GET
request to the endpoint.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: [
+ {
+ domainId: 'string',
+ requestedByPeer: 'string',
+ status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
+ }
+ ]
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: [
+ {
+ domainId: 'string',
+ requestedByPeer: 'string',
+ status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
+ }
+ ]
+}
Response Code | Description |
---|---|
200 | Incoming premium contribution requests have been retrieved successfully. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/premium-provider-management/outgoing
Method: GET
Parameters: —
Input/request structure:
A GET
request to the endpoint.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: [
+ {
+ domainId: 'string',
+ requestedByPeer: 'string',
+ status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
+ }
+ ]
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: [
+ {
+ domainId: 'string',
+ requestedByPeer: 'string',
+ status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
+ }
+ ]
+}
Response Code | Description |
---|---|
200 | Outgoing premium contribution requests have been retrieved successfully. |
500 | Internal server error. |
Protocol: HTTP
Encoding: JSON
Endpoint: /data/api/v1/wallet-management/balance
Method: GET
Parameters: —
Input/request structure:
A GET
request to the endpoint.
Output/response structure:
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ tokenId: {
+ definitionId: 'credit#admin',
+ accountId: 'user@peerId'
+ },
+ balance: 0 //integer($int32)
+ }
+}
{
+ status: {
+ code: 0, //integer($int32)
+ name: 'string',
+ message: 'string'
+ },
+ data: {
+ tokenId: {
+ definitionId: 'credit#admin',
+ accountId: 'user@peerId'
+ },
+ balance: 0 //integer($int32)
+ }
+}
Response Code | Description |
---|---|
200 | Credit balance has been retrieved successfully. |
500 | Internal server error. |
=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=vr(c,a.tabbableOptions),p=pr(c,a.tabbableOptions),w=f.length>0?f[0]:void 0,T=f.length>0?f[f.length-1]:void 0,O=p.find(function(b){return se(b)}),P=p.slice().reverse().find(function(b){return se(b)}),g=!!f.find(function(b){return ie(b)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:g,firstTabbableNode:w,lastTabbableNode:T,firstDomTabbableNode:O,lastDomTabbableNode:P,nextTabbableNode:function(z){var G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,j=f.indexOf(z);return j<0?G?p.slice(p.indexOf(z)+1).find(function(J){return se(J)}):p.slice(0,p.indexOf(z)).reverse().find(function(J){return se(J)}):f[j+(G?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function F(c){if(c!==!1&&c!==r.activeElement){if(!c||!c.focus){F(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,wr(c)&&c.select()}},m=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},E=function(c){var f=c.target,p=c.event,w=c.isBackward,T=w===void 0?!1:w;f=f||xe(p),v();var O=null;if(i.tabbableGroups.length>0){var P=l(f,p),g=P>=0?i.containerGroups[P]:void 0;if(P<0)T?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(T){var b=lt(i.tabbableGroups,function(U){var H=U.firstTabbableNode;return f===H});if(b<0&&(g.container===f||De(f,a.tabbableOptions)&&!se(f,a.tabbableOptions)&&!g.nextTabbableNode(f,!1))&&(b=P),b>=0){var z=b===0?i.tabbableGroups.length-1:b-1,G=i.tabbableGroups[z];O=ie(f)>=0?G.lastTabbableNode:G.lastDomTabbableNode}else ye(p)||(O=g.nextTabbableNode(f,!1))}else{var j=lt(i.tabbableGroups,function(U){var H=U.lastTabbableNode;return f===H});if(j<0&&(g.container===f||De(f,a.tabbableOptions)&&!se(f,a.tabbableOptions)&&!g.nextTabbableNode(f))&&(j=P),j>=0){var J=j===i.tabbableGroups.length-1?0:j+1,B=i.tabbableGroups[J];O=ie(f)>=0?B.firstTabbableNode:B.firstDomTabbableNode}else ye(p)||(O=g.nextTabbableNode(f))}}else O=h("fallbackFocus");return O},x=function(c){var f=xe(c);if(!(l(f,c)>=0)){if(ve(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}ve(a.allowOutsideClick,c)||c.preventDefault()}},C=function(c){var f=xe(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var w,T=!0;if(i.mostRecentlyFocusedNode)if(ie(i.mostRecentlyFocusedNode)>0){var O=l(i.mostRecentlyFocusedNode),P=i.containerGroups[O].tabbableNodes;if(P.length>0){var g=P.findIndex(function(b){return b===i.mostRecentlyFocusedNode});g>=0&&(a.isKeyForward(i.recentNavEvent)?g+1
{const{slotScopeIds:D}=y;D&&(B=B?B.concat(D):D);const _=i(m),P=w(o(m),y,_,N,A,B,W);return P&&rn(P)&&P.data==="]"?o(y.anchor=P):(Ue=!0,c(y.anchor=a("]"),_,P),P)},S=(m,y,N,A,B,W)=>{if(Ue=!0,y.el=null,W){const P=$(m);for(;;){const I=o(m);if(I&&I!==P)l(I);else break}}const D=o(m),_=i(m);return l(m),n(null,y,_,D,N,A,nn(_),B),D},$=m=>{let y=0;for(;m;)if(m=o(m),m&&rn(m)&&(m.data==="["&&y++,m.data==="]")){if(y===0)return o(m);y--}return m};return[f,h]}const pe=fo;function Jl(e){return Ro(e)}function Xl(e){return Ro(e,Yl)}function Ro(e,t){const n=Xn();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:g,setScopeId:w=Re,insertStaticContent:E}=e,S=(u,d,p,v=null,b=null,T=null,R=!1,x=null,O=!!d.dynamicChildren)=>{if(u===d)return;u&&!rt(u,d)&&(v=Jt(u),Pe(u,b,T,!0),u=null),d.patchFlag===-2&&(O=!1,d.dynamicChildren=null);const{type:C,ref:H,shapeFlag:F}=d;switch(C){case wt:$(u,d,p,v);break;case ve:m(u,d,p,v);break;case Nt:u==null&&y(d,p,v,R);break;case ge:M(u,d,p,v,b,T,R,x,O);break;default:F&1?B(u,d,p,v,b,T,R,x,O):F&6?q(u,d,p,v,b,T,R,x,O):(F&64||F&128)&&C.process(u,d,p,v,b,T,R,x,O,ut)}H!=null&&b&&vn(H,u&&u.ref,T,d||u,!d)},$=(u,d,p,v)=>{if(u==null)r(d.el=l(d.children),p,v);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},m=(u,d,p,v)=>{u==null?r(d.el=c(d.children||""),p,v):d.el=u.el},y=(u,d,p,v)=>{[u.el,u.anchor]=E(u.children,d,p,v,u.el,u.anchor)},N=({el:u,anchor:d},p,v)=>{let b;for(;u&&u!==d;)b=g(u),r(u,p,v),u=b;r(d,p,v)},A=({el:u,anchor:d})=>{let p;for(;u&&u!==d;)p=g(u),s(u),u=p;s(d)},B=(u,d,p,v,b,T,R,x,O)=>{R=R||d.type==="svg",u==null?W(d,p,v,b,T,R,x,O):P(u,d,b,T,R,x,O)},W=(u,d,p,v,b,T,R,x)=>{let O,C;const{type:H,props:F,shapeFlag:j,transition:U,dirs:z}=u;if(O=u.el=i(u.type,T,F&&F.is,F),j&8?f(O,u.children):j&16&&_(u.children,O,null,v,b,T&&H!=="foreignObject",R,x),z&&Fe(u,null,v,"created"),D(O,u,u.scopeId,R,v),F){for(const Q in F)Q!=="value"&&!Mt(Q)&&o(O,Q,null,F[Q],T,u.children,v,b,$e);"value"in F&&o(O,"value",null,F.value),(C=F.onVnodeBeforeMount)&&Ce(C,v,u)}z&&Fe(u,null,v,"beforeMount");const G=(!b||b&&!b.pendingBranch)&&U&&!U.persisted;G&&U.beforeEnter(O),r(O,d,p),((C=F&&F.onVnodeMounted)||G||z)&&pe(()=>{C&&Ce(C,v,u),G&&U.enter(O),z&&Fe(u,null,v,"mounted")},b)},D=(u,d,p,v,b)=>{if(p&&w(u,p),v)for(let T=0;T This section is designed to help you integrate the FIB API seamlessly into your application or system by providing instructions on how to register an account, check the API availability, call API endpoints, and test your implementation in a sandbox environment. It is advised to read the following topics in the order that they are presented: Once your registration application has been approved, the connection credentials are sent to the email address you provided during registration. Using these credentials, you can implement calls to the FIB API endpoints into the code of your own application or system. Following the basic API architecture, your application or system—the API client in this relationship—connects to the FIB API server. To integrate your API client with the FIB API server, you can use different programming languages and frameworks, including Python, Java, Node.js, RUST, depending on the requirements of your own application or system. Some tutorials in this documentation provide code snippets in Kotlin/Java that are required in order to perform Iroha-related operations. The provided FIB API endpoints allow users to access the network's blockchain data, enabling users to perform operations such as submitting, retrieving and flagging contributions, etc. For examples of scenarios where FIB API endpoints are being called, check out Tutorials. Before implementing any API calls, it's important to ensure that the API is available and accessible to your application. To do so, authorize your account and retrieve a JSON token. To check the API availability, follow the Authorizing an account tutorial. If the JSON token is retrieved successfully, then the FIB API is available and you can proceed with Calling API endpoints. Otherwise, a response with an error code is displayed indicating the issue that needs to be resolved before proceeding. For a list of possible responses, see Authorizing a user in the system > Responses. Note There are a variety of external issues that may be preventing you from successfully retrieving a JSON token. Examples include blocked outgoing HTTP requests and no Internet connection. The test environment is a safe and controlled environment where you can try out and experiment with the FIB API without affecting the production system. Here, you can make mistakes, test different scenarios, and learn how to use the API. To access the test environment, you need to follow the same steps as for the production environment. The only difference is that you will be provided with test credentials instead of production credentials (see Connection details below). Using the test environment is beneficial for at least the following several reasons: To connect to the FIB test environment, use the following credentials: To begin using FIB as a peer and accessing API endpoints, you need to register a user account. To register an account, perform the following steps: You have now submitted your registration application which is then manually reviewed by the Consortium Administrator. As soon as your application is approved, you receive an email notifying you that you become a peer in the FIB network and, depending on the chosen access method, you can access the FIB functionality via Web UI and/or API endpoints. For Web UI tutorials, see Tutorials: Web interface. For API tutorials, see Tutorials: API. If you have forgotten the password on your account, you can reset it by performing the following steps: Welcome to the Fraud Intelligence Blockchain (FIB) documentation. FIB is a blockchain-based platform designed to combat fraud in various industries, including telecommunications, finance, and e-commerce. This platform provides a secure and decentralized system for storing and sharing fraud-related information among participants to prevent potential fraudulent activities. FIB operates on the Iroha 2 Hyperledger blockchain and uses smart contracts to automate the exchange of fraud intelligence data. This platform enables organizations to securely share and access real-time information about known fraud events and other relevant data, allowing them to identify potential fraud attempts quicker and more accurately. If you are new to FIB, start with the Overview section, which provides a high-level introduction to the technology. This section explains what the FIB is, how it works, and other related concepts and terms. For instructions on how to get started with the FIB, see the Getting Started section. This section covers everything from setting up your FIB account to accessing the API, and integrating it into your existing workflows and systems. For assistance with FIB Web UI, try the Tutorials: Web UI section that walks you through basic operations that you can perform using the web interface. If you're looking for step-by-step guidance on how to interact with the FIB API, check out the Tutorials: API section where you can find a variety of scenarios to help you get started with the API. Finally, the API Specification section provides technical specification for the available endpoints explaining their internals exhaustively. Iroha 2 is a blockchain hyperledger used to manage accounts, assets, and on-chain data storage with efficient smart contracts. The ledger is written in Rust and provides the following SDKs: Check out the Iroha 2 Documentation as it provides an introduction to Iroha 2 as well as language-specific guides for Bash, Python, Rust, Kotlin/Java, and Javascript/TypeScript. If, at any point, you’re experiencing any issues, please submit them at Fraud Intelligence Blockchain Freshdesk. Upon review, someone will get back to you to resolve the issue. Additionally, you may contact FIL via email at support@fraudintelligencelimited.com JQ!@
z&j2E)g81#>5(tl@K9Z(j0It&btzo{egx)#sb)+ydt0}qAHVY&Wrol?kDC#~o LwfBE1dHblA!m47G&!hk~t^C>4oQYwP;1!en
zV8nlA@T7Ul+|1v6|K^hBS+dVT87DQ$MQZ7~plD2>o(7@ej+2EBV+s~eT_FtJc4b}H
zA}^1kkL)ZHwB;^N=BQq6Bq)RNdzG6Getting started
Calling API endpoints
Checking API availability
Public test environment
Connection Details
',8),a=[r];function s(l,c,d,u,p,h){return t(),n("div",null,a)}const g=e(i,[["render",s]]);export{f as __pageData,g as default};
diff --git a/assets/getting-started_public-test-environment.md.69e33594.lean.js b/assets/getting-started_public-test-environment.md.69e33594.lean.js
new file mode 100644
index 0000000..3f12e94
--- /dev/null
+++ b/assets/getting-started_public-test-environment.md.69e33594.lean.js
@@ -0,0 +1 @@
+import{_ as e,o as t,c as n,Q as o}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Public test environment","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/public-test-environment.md","filePath":"getting-started/public-test-environment.md"}'),i={name:"getting-started/public-test-environment.md"},r=o("",8),a=[r];function s(l,c,d,u,p,h){return t(),n("div",null,a)}const g=e(i,[["render",s]]);export{f as __pageData,g as default};
diff --git a/assets/getting-started_registering-an-account.md.ac58196f.js b/assets/getting-started_registering-an-account.md.ac58196f.js
new file mode 100644
index 0000000..7a9e3b1
--- /dev/null
+++ b/assets/getting-started_registering-an-account.md.ac58196f.js
@@ -0,0 +1 @@
+import{_ as e,o as t,c as o,Q as n}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Registering an account","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/registering-an-account.md","filePath":"getting-started/registering-an-account.md"}'),r={name:"getting-started/registering-an-account.md"},a=n('443
HTTPS
443
HTTPS
Registering an account
Expected Result
Restoring access to an account
',12),i=[a];function s(c,l,g,h,u,d){return t(),o("div",null,i)}const f=e(r,[["render",s]]);export{m as __pageData,f as default};
diff --git a/assets/getting-started_registering-an-account.md.ac58196f.lean.js b/assets/getting-started_registering-an-account.md.ac58196f.lean.js
new file mode 100644
index 0000000..03b9d38
--- /dev/null
+++ b/assets/getting-started_registering-an-account.md.ac58196f.lean.js
@@ -0,0 +1 @@
+import{_ as e,o as t,c as o,Q as n}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Registering an account","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/registering-an-account.md","filePath":"getting-started/registering-an-account.md"}'),r={name:"getting-started/registering-an-account.md"},a=n("",12),i=[a];function s(c,l,g,h,u,d){return t(),o("div",null,i)}const f=e(r,[["render",s]]);export{m as __pageData,f as default};
diff --git a/assets/index.md.433ae868.js b/assets/index.md.433ae868.js
new file mode 100644
index 0000000..40c43d5
--- /dev/null
+++ b/assets/index.md.433ae868.js
@@ -0,0 +1 @@
+import{_ as t,C as a,o as r,c as o,H as i,Q as n}from"./chunks/framework.c4d6cd72.js";const b=JSON.parse('{"title":"Welcome","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),s={name:"index.md"},h=n('Welcome
Where to start?
What is Iroha 2?
Getting help
',19);function l(c,p,d,u,g,f){const e=a("CompaniesLogos");return r(),o("div",null,[h,i(e,{location:"docs"})])}const y=t(s,[["render",l]]);export{b as __pageData,y as default};
diff --git a/assets/index.md.433ae868.lean.js b/assets/index.md.433ae868.lean.js
new file mode 100644
index 0000000..c0ca567
--- /dev/null
+++ b/assets/index.md.433ae868.lean.js
@@ -0,0 +1 @@
+import{_ as t,C as a,o as r,c as o,H as i,Q as n}from"./chunks/framework.c4d6cd72.js";const b=JSON.parse('{"title":"Welcome","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),s={name:"index.md"},h=n("",19);function l(c,p,d,u,g,f){const e=a("CompaniesLogos");return r(),o("div",null,[h,i(e,{location:"docs"})])}const y=t(s,[["render",l]]);export{b as __pageData,y as default};
diff --git a/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 b/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..2a687296748f6b8bc8076cd11bde49cd27e4442b
GIT binary patch
literal 28332
zcmV(^K-Ir@Pew8T0RR910B)=R5dZ)H0L(-H0B%750|eaw00000000000000000000
z0000QgDD%9791)+NLE2ohdBmdKT}jeRDl`*gBUMt3W0+R>k}}6+I9gp0we>63JZfs
z00bZfg$M^A8&tgo+lIZ{0W$kf`dwxsbvsBZKijgA2%9xXMMwW9BpqW2)F+!l*M37V
zl9T{JHdk?)M!T60nkxGasf@PS$3btkm4;ibH5~*Z*uTsmJGUKxX9cyg+F)d-5ys4C
zo7|FZ`ph?caYdg&{|^%(5eV_PgnKGlxbGk&;@QKi9rFvf2ykadkugvB=bv=iyMMk$
zBY7+a5GAr4D>kv^F3Pf`OSoyhikEeWmv~9(oDIp6)-@vO+gl-}bh(56@L;!pH{2TT
zIOp!%>5R+DSWy{w>@s%z%*iq9}y|{QX&gT`Q!@z9Gz>Ib(
z|3peaUn{HEqMX@txWmYNiMtrk+W`hJq(o`00V!8bl$dA@4FQ{9eT^$EzL(+gAN$tW
zmBP)ApI@2O%|Hk5J;C`h;YD@CBW$6=F4k4^^vgOY%?|18GTR@LbV>B8v0_c3&e55`
z8fn}e8^SWWens6}!U)$H9j&jv#uXdD;2I+wm8a8A1)q>0$7GVFGuPDfU)%qz)+Lq+
z@h9RU8m|Vx(&pN(xGOq!W>q>aXHS>WD*FbEur>m|*{-8HO=hDy>E?iJOQKNxeWU6a
zgD9}mn)5
24!+J~1qFEZ_FdP0!1|o~vA&`3N8s7HEax_k(wi_~N&uPssk81Pe#+kY486-2+KX
z#Zrv9BS4-QeX5|?UYXWglolIWummORbb(DygblHu0cnL4zB|P8}0t5&U@c|JdMvNGlmzMw!d_sgsBSwh~
z<3uKERMdzOA;C{wc9u@*KWk~1ZrQFoOIvrA?XoRxnU;2`Lr2EaDbuDiOouv|*;F%-
z#gKPJ>8fl=HUf*mFq&P*op#SRHMNMZavLqTL^w+pSZ!eS2CJS@tod*`buU1uhDOJ08ue>N_F5{*G
z`5v{Nt=f7$?M#VTR2X6_txW28r5_6~>2K*>f$nP-**kY}^nV223V+*L)?j9WywLU-
zrw`WQ<5`1~A@K>HGYVhn`I8?|pPu~qrhBeS$&Q%I>v%6;*cH_CI>uGfH$@hvIqY~@
zjrFRR)!t)vo*GB*xH|lI*!hA6=XH
$
zbUcm^iyg(j;+5h%#e2oa#V5t{R#)ql)(=Z>=`4rJ3+2acfBR1RN&9)_sq^dY^`6>X
zk2O1*#^z}AdNbBM@1V|bXOGVL&O4nycaL{ZcR%iK^t3&Fudg@VyW0EnP|DC&Lsy5E
zhO>shJ*