Base API

API Signatures

  • The authorization signature uses 'Ethereum message signing', assuming the ChainID of the relevant chain (e.g., ETH: 1, Silicon Mainnet: 2355).

  • For signatures used in snapshot submissions, verification is conducted using the ETH ChainID of 1 (the ChainID is included in the message).

Basic Response

{
  statusCode: number;
  message: string;
  data: ResponseData;
}

Success


{
	"statusCode": 200
	"data": {},
	"message": "success"
	
}

Fail

{
	"statusCode": 500
	"message": error_message
}

Error Message List

The following are basic error messages. Additional error messages may be present depending on the handling within each method.

Basic Validation

MessageDescription

invalid_target

When managerName does not match the name of the requested Manager.

request_timeout

Request timed out.

used_signature

When the signature value has already been processed within the allotted time (to prevent double usage).

invalid_cohort

When the CohortId in the request does not match the CohortId in the requestPath, or if the CohortId is invalid or the cohort does not exist.

invalid_owner

When the owner in the request is missing or does not match the Owner of the CohortId.

invalid_method

When the method is incorrect.

fail_to_authorization

When the authorization signature verified with the hash in the body does not match the Cohort Owner.

Basic Method Validation

MessageDescription

invalid_members

When the members field is missing or not in a dictionary format.

exceed_limit

When the number of members being added exceeds the limit per request.

too_many_members

When the total number of members, after attempted additions, exceeds the overall limit.

invalid_address

When one or more addresses in the members field have an incorrect format.

invalid_weight

When the format of the weight in the members field is incorrect (must be an integer between 0 and uint32.max).

pending_snapshot

When an add request is sent during the snapshot prepare status, but a submit is expected.

Signature Generation Example

Example 1

dataHash = keccak256(
		abi.encode(
				[string, address, uint256, address[], address[], bytes[], uint256],
				["OpenCohort:UpdateIdentity", cohort, chainId, identityList, addressList, signatureList, validUntil]
		)
);
signingHash = ERC191(dataHash);

Example 2

const {
    cohort,
    chainId,
    cohortId,
    snapshotTime,
    snapshotSignature,
    validUntil
} = dto;

const dataBytes = defaultAbiCoder.encode(
    ['string', 'address', 'uint256', 'uint256', 'uint256', 'bytes', 'uint256'],
    ['OpenCohort:Submit', cohort, chainId, cohortId, snapshotTime, snapshotSignature, validUntil]
);
const dataHash = keccak256(dataBytes);
const signingBytes = Buffer.concat([
    Buffer.from('\x19Ethereum Signed Message:\n32', 'ascii'),
    Buffer.from(dataHash.replace("0x",""), 'hex')
]);
const signingHash = keccak256(signingBytes);

Last updated

Logo

Copyright HIGHDRAW. All Rights Reserved.