- Primas Node API Documentation https://github.com/primasio/primas-api-doc
Sign with a signature machine
"php": ">=7.0",
"ext-gmp": "*",
"guzzlehttp/guzzle": "~6.0"
Sign with the keystore
"php-64bit": ">=7.0",
"ext-gmp": "*",
"ext-scrypt": "~1.4",
"ext-secp256k1": ">=0.1.0",
"ext-keccak": "~0.2",
"guzzlehttp/guzzle": "~6.0",
"bitwasp/buffertools": "^0.5.0"
- ext-scrypt: https://github.com/DomBlack/php-scrypt
- ext-secp256k1: https://github.com/Bit-Wasp/secp256k1-php
- ext-keccak: https://github.com/EricYChu/php-keccak-hash
- 1、Use Git to clone the entire repository in the root folder, or export a zip of the repository and extract locally.
- 2、composer require primas/node
- Note: the API configuration needs to be initialized before using the API method
- If you need a large integer, use it as a string
Example
create root account
- Remember to save the root account id
$config = [
"http_options" => [
"base_uri" => "https://staging.primas.io" // testnet
]
];
$app = \Primas\Factory::account($config);
// Sign with the keystore
// Import the keystore
$keystore = '{"version":3,"id":"e1a1909a-7a38-44aa-af04-61cd3a342008","address":"d75407ad8cabeeebfed78c4f3794208b3339fbf4","Crypto":{"ciphertext":"bcf8d3037432f731d3dbb0fde1b32be47faa202936c303ece7f53890a79f49d2","cipherparams":{"iv":"e28edaeff90032f24481c6117e593e01"},"cipher":"aes-128-ctr","kdf":"scrypt","kdfparams":{"dklen":32,"salt":"7d7c824367d7f6607128c721d6e1729abf706a3165384bbfc2aae80510ec0ce2","n":1024,"r":8,"p":1},"mac":"52f98caaa4959448ec612e4314146b6a2d5022d5394b77e31f5a79780079c22f"}}';
$password = "Test123:::";
\Primas\Kernel\Eth\Keystore::init($keyStore, $password);
$parameters = [
"name" => "Test123",
"abstract" => "first test",
"created" => time(),
"address" => (string)\Primas\Kernel\Eth\Keystore::getAddress();
];
$metadataJson = $app->buildCreateAccount($parameters);
$signature = $app->sign($metadataJson);
$metadata = $app->setSignature($metadataJson, $signature);
$res = $account->createAccount($metadata);
// ......
// Sign with a signature machine
$parameters = [
"name" => "Test123",
"abstract" => "first test",
"created" => time(),
"address" => "0xd75407ad8cabeeebfed78c4f3794208";
];
$metadataJson = $app->buildCreateAccount($parameters);
// TODO request signature machine get signature
// If it is asynchronous, save the correspondence between the signature result and the application.
$signature="your signature from your signature machine";
$metadata = $app->setSignature($metadataJson, $signature);
$res = $account->createAccount($metadata);
var_dump($res);
// save the root account id
// save the root account id
// save the root account id
// result
/*
array(3) {
["result_code"]=>
int(0)
["result_msg"]=>
string(7) "success"
["data"]=>
array(2) {
["id"]=>
string(64) "e19aa9a8cdc217c345925b7e824baea0ef6dab0e11117dfd2746be469b412724"
["dna"]=>
string(64) "4659b4848c8e9e3ec60c94ded2cc58a35419411f58ff27dc51f116bb05577eb9"
}
}
*/
/**
* Class Factory
*
* @method static \Primas\Account\Application account(array $config)
* @method static \Primas\Content\Application content(array $config)
* @method static \Primas\ContentInteraction\Application content_interaction(array $config)
* @method static \Primas\Group\Application group(array $config)
* @method static \Primas\Node\Application node(array $config)
* @method static \Primas\Query\Application query(array $config)
* @method static \Primas\System\Application system(array $config)
* @method static \Primas\TimeLine\Application time_line(array $config)
* @method static \Primas\Token\Application token(array $config)
*
* @package Primas
*/
class Factory
{
...
}
- An array type
$config = [
/*
* refer guzzle http document http://guzzle.readthedocs.io/en/stable/request-options.html
*/
"http_options" => [
"base_uri" => BASE_URI, // default https://rigel-a.primas.network
"headers" => [
/*
* default application/json
* when Content-Type is multipart/form-data,if you want to post a file,the file field should be a file path like "F:/tmp/test.png" or an object instance CURLFile
*/
"Content-Type" => "application/json" //
// ...
],
],
/*
* root account id
*/
"account_id" => $account_id
];
- Content APIs
- Content Interaction APIs
- 1. Get share metadata
- 2. Get the shares of a group share
- 3. Get share reports
- 4. Report share
- 5. Get the likes of a group share
- 6. Like a group share
- 7. Cancel the like of a group share
- 8. Get the comments of a group share
- 9. Get replying comments of a comment
- 10. Comment a group share
- 11. Update the comment of a group share
- 12. Delete the comment of a group share
- Group APIs
- 1. Get group metadata
- 2. Create group
- 3. Update group
- 4. Dismiss group
- 5. Get group members
- 6. Join group
- 7. Approve or decline member application
- 8. Quit group or kick member out
- 9. Get group member whitelist
- 10. Add group member whitelist
- 11. Approve or decline group member whitelist
- 12. Quit group member whitelist
- 13. Get group shares
- 14. Share to a group
- 15. Approve or decline share application
- 16. Delete group share
- 17. Get group avatar metadata
- 18. Get group avatar raw image
- Account APIs
- 1. Get account metadata
- 2. Create account
- 3. Update account metadata
- 4. Get account credits list
- 5. Get account content list
- 6. Get account groups list
- 7. Get account shares
- 8. Get account shares in a single group
- 9. Get account likes
- 10. Get account comments
- 11. Get account group applications
- 12. Get account share applications
- 13. Get account report list
- 14. Get account notifications
- 15. Get account avatar metadata
- 16. Get account avatar raw image
- Token APIs
- Timeline APIs
- Query APIs
- System APIs
- Node APIs
result_code | result_msg | description |
---|---|---|
0 | success | Success |
400 | client error | Client error |
401 | invalid data | Invalid post data |
402 | parse input JSON format error | Invalid JSON string |
403 | client signature error | Signature verification failed |
404 | input parameter error | Invalid parameter |
405 | input parameter empty | Empty parameter |
406 | nonce less than lasted | Nonce is used before |
500 | server error | Server error |