{"id":30069390,"url":"https://github.com/poetapp/frost-api","last_synced_at":"2025-08-25T07:11:14.282Z","repository":{"id":297848872,"uuid":"108048802","full_name":"poetapp/frost-api","owner":"poetapp","description":"Po.et's API Layer","archived":false,"fork":false,"pushed_at":"2020-02-18T01:40:07.000Z","size":1723,"stargazers_count":24,"open_issues_count":30,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-08-08T11:16:02.200Z","etag":null,"topics":["api","frost-api","nodejs"],"latest_commit_sha":null,"homepage":"https://api.poetnetwork.net","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/poetapp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-10-23T22:48:12.000Z","updated_at":"2023-09-04T11:45:06.000Z","dependencies_parsed_at":"2025-06-07T21:48:41.311Z","dependency_job_id":"5d48b68b-1a83-4819-b7dd-9736fd91b515","html_url":"https://github.com/poetapp/frost-api","commit_stats":null,"previous_names":["poetapp/frost-api"],"tags_count":165,"template":false,"template_full_name":null,"purl":"pkg:github/poetapp/frost-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poetapp%2Ffrost-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poetapp%2Ffrost-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poetapp%2Ffrost-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poetapp%2Ffrost-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/poetapp","download_url":"https://codeload.github.com/poetapp/frost-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poetapp%2Ffrost-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272020880,"owners_count":24859906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-25T02:00:12.092Z","response_time":1107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","frost-api","nodejs"],"created_at":"2025-08-08T11:09:21.770Z","updated_at":"2025-08-25T07:11:14.229Z","avatar_url":"https://github.com/poetapp.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Po.et API\n\n[![CircleCI](https://circleci.com/gh/poetapp/frost-api/tree/master.svg?style=shield\u0026circle-token=4c0674e6ac8ca64c250d6f09bff344e48762c40b)](https://circleci.com/gh/poetapp/frost-api/tree/master)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovatebot.com/)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n[![Join the chat at https://gitter.im/poetapp/Lobby](https://badges.gitter.im/poetapp/Lobby.svg)](https://gitter.im/poetapp/Lobby)\n\nPo.et's API layer for publishers.\n\n- [Getting started](#getting-started)\n    - [Requirements](#requirements)\n    - [Install](#install)\n    - [Development mode](#development-mode)\n- [API](#api)\n- [Vault](#vault)\n- [Consul](#consul)\n- [Contributing](#contributing)\n    - [Coverage](#coverage)\n- [Security](#security)\n\n## Getting started\n\n### Requirements\n\n* Node.js (see [`.nvmrc`](./.nvmrc) for the version to install)\n* [Docker](https://docs.docker.com/install/) (with [docker-compose](https://docs.docker.com/compose/install/))\n\n## How to Run\n\nTo run the Po.et API, clone this repo, and make sure you have [Docker](https://docs.docker.com/install/) and [docker-compose](https://docs.docker.com/compose/install/) installed.\n\nClone the repo:\n\n```bash\ngit clone https://github.com/poetapp/frost-api.git\ncd frost-api\n```\n\nTo start the Po.et API development environment, run:\n\n```bash\ndocker-compose up --build\n```\n\nYou only need to run `docker-compose build` to create or update the Docker images, and `docker-compose up -d` to start them. To shut everything down, it is recommended to use `docker-compose down --volumes`  to stop the running containers and clear any data. If you wish to keep data between invocations, use `docker-compose down`.\n\nYou can also `docker-compose exec mongo bash` to run the mongo shell.\n\n### Dependencies\n\nPo.et API depends on [RabbitMQ](http://www.rabbitmq.com/), [IPFS](https://ipfs.io/), [Bitcoin Core](https://github.com/bitcoin/bitcoin), [Po.et node](https://github.com/poetapp/node.git) and [MongoDB](https://github.com/mongodb/mongo).\nThese dependencies are setup automatically when you run `docker-compose`.\n\n## API\n\nWe are using the [OpenAPI specification](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md) to document the Po.et API:\n- https://app.swaggerhub.com/apis-docs/po.et/poet-api/0.1.0#/\n\n### Tokens\n\nThere are four types of tokens generated by the Po.et API (see [src/api/Tokens.ts](./src/api/Tokens.ts)). The two main ones used in the Po.et API methods described below are:\n\n- Login token - used to create and maintain the account\n- API token - used for creating and viewing works, for both live (mainnet) and test (testnet) environments\n\nThere are two other tokens sent by email:\n\n- Verify Account token - used when verifying an email address \n- Forgot Password token - used when resetting a passwordwithout the old password \n\n## Vault\n\nThe Po.et API uses [Vault](https://www.vaultproject.io/) to manage API keys.\n\nThe API needs Vault to be running, initialized and unsealed.\n\nCurrently, if the `VAULT_TOKEN` environment variable isn't set, the API will try and initialize, unseal and configure Vault automatically. This functionality will be removed in future releases.\n\nTo manually set up Vault, if using the provided Docker container:\n```\nsudo docker-compose exec vault vault operator init\nsudo docker-compose exec vault vault operator unseal\nsudo docker-compose exec vault vault login\n```\n\nBy default, `init` will create an _Initial Root Token_ and 5 _Unseal Keys_, out of which any three can reconstruct the root token.\n\nThe _Root Token_ is what we'll use in the `VAULT_TOKEN` environment variable, and also for the `vault login` command.\n\nThe _key shares_ will need to be provided to the `operator unseal` command.\n\nThese instructions are perfectly valid for a development environment, for production environments please follow more secure practices.\n\nSee also [Vault dev server](https://www.vaultproject.io/intro/getting-started/dev-server.html).\n\n#### Error checking seal status\n\nif you get an `Error checking seal status` error, check the status with:\n\n```bash\ncurl https://127.0.0.1:8200/v1/sys/seal-status\n```\n\n## Consul\n\nSee [docs](https://www.consul.io/docs/agent/basics.html).\n\n#### Start\n\n```bash\nconsul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -bind 127.0.0.1\n```\n\n#### Stop\n\n```bash\nps ax | grep consul\nkill -INT consul_pid\n```\n\n#### Delete data\n\n\u003e WARNING: only use in development mode.\n\n```bash\ncurl -X DELETE 'http://localhost:8500/v1/kv/vault?recurse'\n```\n\n## Contributing\n\nSee [Contributing](https://github.com/poetapp/documentation/blob/master/CONTRIBUTING.md).\n\n### Coverage\nCoverage is generated with [Istanbul](https://github.com/istanbuljs/nyc). A more complete report can be generated by running `npm run coverage`, which will run `npm run coverage:unit` and `npm run coverage:integration` together. You may also execute these commands separately.\n\n\u003e Note: We are using our own forks of [nyc](https://github.com/istanbuljs/nyc) and [istanbul-lib-instrument](https://github.com/istanbuljs/istanbuljs/tree/master/packages/istanbul-lib-instrument) in order to add better support for TypeScript. We intend to contribute our forks back to nyc and istanbul-lib-instrument in order to make our solution available to the entire community. You can follow the issues in this [PR](https://github.com/poetapp/node/pull/230), and check the new PRs for [istanbul-lib-instrument](https://github.com/istanbuljs/istanbuljs/pull/204).\n\n## Security\n\nSee https://www.po.et/security.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpoetapp%2Ffrost-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpoetapp%2Ffrost-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpoetapp%2Ffrost-api/lists"}