Provide is an enterprise low-code application platform for distributed systems that makes it quick and easy to add blockchain to your organization's technology stack. This documentation describes the Provide architecture and a holistic suite of APIs made available by Provide for organizations and developers to build, test and scale Web3 applications and distributed systems.
This overview provides an inventory of core APIs which are suitable for building all kinds of Web3 applications. The APIs enable users to orchestrate public and permissioned peer-to-peer infrastructure, connect that infrastructure with legacy systems and build sophisticated applications in a low-code environment.
The following open-source client libraries are available on GitHub:
Provide requires the presence of a
bearer API token to authorize most API calls. A
bearer API token is an encoded JWT which contains a subject claim (
sub) which references the authorized entity (i.e., a
Application). The encoded JWT token will, in most cases, include an expiration (
exp) after which the token is no longer valid. Tokens issued without an expiration date (i.e., certain machine-to-machine API tokens) can be explicitly revoked. The standard and application-specific JWT claims are signed using the
RS256 algorithm. The authorized entity may use the signed bearer
Token to access one or more platform resources for which the
Token was authorized. Unless otherwise noted, all API requests must include a header such as:
Authorization: bearer <JWT>.
Authorization header is scoped to an authorized platform
User or an
Application as described above.
The encoded JWT is signed using the
RS256(RSA Signature with SHA-256) algorithm. The following public key can be used to verify the signature:
-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0yqdJMBej1X8WwMMkMZw DV6zZzup4RHLcln0xfGSm6dMPBDM1G96fuHhOwH5+uU5MQHJP7RqW71Bu5dLIG8Z RX+XyUtb0sxCV/7X27Nm/bKpDysaSWQ36reAmw5wVaB1SoFeN519FY5rhoCWmH3W auBAHTzpjg57p7uR0XynYXf8NSGXlysWHppkppqwrPH64G6UZaB7SMl1PFfkJeqZ zJpzBGYWsixdF1EjXn+Yz0mhUZO2OSPWifOuN7cpn3BuNqegg4iVdz5HDoQhJW7N uRhf3buKd/mjat8XA3e2Rkrr2h835GloScJkj7I4BZUNkzKQuEK6C9xW/zJtbPqQ RYEq84A1hMfSZ3G5HFe2JkqiyvXkFwS3qMc5Pur8tZSzBj6AYMoJJso/aOdphpR8 6MaaWXWTwvwfpZbMRqehOcsmQcNLF2gLJPuHzR5WtVCnWrDgvjsWyeDD1WISKusi aOeHxZjS3Bjl4Imq48l1wi2eI/11F/Xg70F4FJaMYLVHJA2nsmBuuQ9UDYHHq876 clKvIvgIItzJcv9lnmjl1Jks1DwCUF3qF2ugYcs9A3EoEcNzhMgZNJ2j5OUzfx1E bzVKkqoC9MQpZWXgqV0KQqKK4I3rMY+1hLqk4S4eF9ZAVlT33qfMzlf0qWTOcP1Z i2dsm0fy4NxWxknlEn5/LhMCAwEAAQ== -----END PUBLIC KEY-----
Collection endpoints which return large datasets support the following pagination query parameters:
||The results per page being requested|
rpp parameters are provided in the query, sane defaults (i.e.,
page=1&rpp=25 will be applied based on the resource being requested.
X-Total-Results-Count header is provided in the response as a hint indicating how many total results exist for the requested resource, all filters applied.
Content-Range entity headers are not currently supported for pagination.
The following status codes describe Provide API responses:
||The request was successful|
||The request was successful and a new entity was created|
||The request was successfully accepted and processing will complete asynchronously|
||The request was successful but did not return a response|
||The request required an API
||The supplied API
||Platform did not find the requested resource|
||The request was not accepted due to exceeding the rate limit|
||The request resulted in an internal error during processing|
||The requested resource is not implemented by the platform|
||The request cannot be fulfiled due to temporary unavailability of a backend service|
We reserve the right to enforce rate limits on certain API calls in the future.