The command line interface for the TransIP API

Overview

Tipctl

TransIP Control (tipctl) is a tool that connects to the TransIP API from your terminal. It has all available resources implemented from the TransIP RestAPI, and offers you commands to order, update and remove products from your TransIP account.

Latest Stable Version License

Requirements

  • PHP 7.2.0 or later.
  • json (php extension)
  • openssl (php extension)

Installation

There are two ways you can install Tipctl.

Download and install the PHAR file

This can be downloaded from our most recent GitHub Release.

Once the file has been downloaded, you must make sure that the phar file has a correct permission for it to be an executable.

# Go to tipctl.phar
cd /path/to/tipctl

# Make phar file executable
chmod +x ./tipctl.phar

# Test if the tipctl is executable
./tipctl.phar --version

It is important to note that you must use ./ every time to indicate you are using the tipctl executable from your current directory. This is because the command line (bash) interprets all commands by looking for commands in locations described in the environment variable $PATH. If you want to use the tipctl command globally, then we recommend installing using composer.

Install with Composer

You can install Tipctl using Composer. Run the following command:

composer global require transip/tipctl

Now that the tipctl binary is available globally, make sure that your global vendor binaries directory is included in your environment $PATH variable. You can get the vendor binaries directory by using the following command:

composer global config bin-dir --absolute

Now execute the following command to see the version of tipctl installed:

tipctl --version

Getting started

Run the user interactive setup script

tipctl setup

You can also run the setup script with no user interaction

tipctl setup --no-interaction --apiUrl='https://api.transip.nl/v6' --loginName='yourUsername' --apiPrivateKey='yourKeyPair' --apiUseWhitelist=true

# When using spaces to separate an option from its value, you must escape the beginning of your private key
tipctl setup --no-interaction --apiUrl 'https://api.transip.nl/v6' --loginName 'yourUsername' --apiPrivateKey '\-----BEGIN PRIVATE KEY-----...' --apiUseWhitelist=true

Usage / Commands

List all available commands

tipctl list

List all of your domains

tipctl domain:getall

Update a single DNS record on your domain

# See usage information
tipctl domain:dns:updatednsentry -h

# Update a DNS record
tipctl domain:dns:updatednsentry example.com subdomain 300 A 37.97.254.1

Understanding how to use the help argument

When using tipctl you can use a -h argument to get information about how a specified command works.

# Passing a help argument to any command
# tipctl <anycommand> -h

From the above example, the help argument should be used and interpeted like this:

# Example for attach vps command
tipctl bigstorage:attachvps -h

And this will output the following:

Description:
  Attach your big storage to your vps

Usage:
  bigstorage:attachvps [options] [--] <BigStorageName> <VpsName>

Arguments:
  BigStorageName         The name of the big storage
  VpsName                Name of the vps that the big storage should attach to.

Usage example and how it should be interpeted

# We look at the following usage example:
# bigstorage:attachvps [options] [--] <BigStorageName> <VpsName>

# Interpertation of the above
tipctl bigstorage:attachvps example-bigstorage3 examples-vps4

Demo / Read Only Modes

Test mode

Test mode allows you to connect to your TransIP account and execute actions without making any changes to your products or your account. In the test process, all actions are evaluated as best as possible, comparable to production mode. If any given argument is incorrect, then you will see errors that explain why a query was unsuccessful.

While executing any command, you can provide an argument called --test. This lets our API know that the command you executed is a test and no changes will occur in your TransIP account.

# Example for all commands
# tipctl --test <command> <arguments>

# How you should use this
tipctl --test vps:order vps-bladevps-x1 debian-9

Demo mode

Demo mode allows you to connect to the TransIP demo account and interact with the demo account to give you perspective on how you can use Tipctl with a TransIP account.

# Example for all commands
# tipctl --demo <command>

# How this should be used
tipctl --demo vps:getall

RestAPI Library

How PHP resource calls are implemented

Since this project is built on the RestAPI PHP library, in the library README.md we recommend to look in to this CLI project for examples on how we have implemented the available resource calls that exist in the RestAPI library.

Where to find the implementations

All commands implemented in this project are located inside the src/Command/ directory. Each class represents a command for Tipctl.

Every class has a execute method that will look like this:

protected function execute(InputInterface $input, OutputInterface $output)
{
    $domains = $this->getTransipApi()->domains()->getAll();
    $this->output($domains);
}

The code snippet in the code above is equivalent to this library example:

$domains = $api->domains()->getAll();

To see how to retrieve all invoices in your TransIP account, you would look in to the file: src/Command/Invoice/GetAll.php

The code example for this should be interpreted like this:

/**
* Implementation in tipctl
 */
protected function execute(InputInterface $input, OutputInterface $output)
{
    $page = $input->getArgument(Field::PAGE);
    $itemsPerPage = $input->getArgument(Field::ITEMS_PER_PAGE);

    $invoices = $this->getTransipApi()->invoice()->getSelection($page, $itemsPerPage);

    $this->output($invoices);
}

/**
* How this implementation should be interpreted and used when using the RestAPI library
 */
$page = 1;
$itemsPerPage = 25;
$invoices = $api->invoice()->getSelection($page, $itemsPerPage);
print_r($invoices);

To see all implementations in this project, you can see what commands are available by downloading Tipctl and listing all available commands. You can then use this as a reference point to find your desired class.

Comments
  • every command output same deprecated error

    every command output same deprecated error

    bash-5.1# tipctl list
    
    Deprecated: Return type of Transip\Api\Library\Entity\AbstractEntity::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /tmp/vendor/transip/transip-api-php/src/Entity/AbstractEntity.php on line 18
    Transip RestAPI CLI 6.12.0
    

    Can you fix this?

    I've created a fresh docker container with this Dockerfile:

    FROM composer
    
    RUN composer global require transip/tipctl && \
        apk add openssl\
        wget \
        jq 
    
    ENV PATH="/tmp/vendor/bin:${PATH}"
    

    In other words:

    • I'm using the alpine container with composer preinstalled
    • then add tipctl by using the composer command

    And now I'm having a container with PHP 8.1.1, Composer version 2.2.2, and Transip RestAPI CLI 6.12.0. And a deprecated warning on every request.

    My PHP skills are not enough to solve this and create a PR.

    bug 
    opened by jaydouble 2
  • Make DNS text output usable

    Make DNS text output usable

    This PR makes the output of domain:dns:getbydomainname --format=txt actually usable in practical cases.

    Sample output:

    $ bin/tipctl domain:dns:getbydomainname -d transipdemonstratie.nl --format=txt
     @                    A     300   37.97.254.27
     @                    AAAA  300   2a01:7c8:3:1337::27
     @                    MX    86400 10 @
     @                    TXT   300   v=spf1 ~all
     ftp                  CNAME 86400 @
     mail                 CNAME 86400 @
     transip-A._domainkey CNAME 3600  _dkim-A.transip.email.
     transip-B._domainkey CNAME 3600  _dkim-B.transip.email.
     transip-C._domainkey CNAME 3600  _dkim-C.transip.email.
     www                  CNAME 86400 @
     _dmarc               TXT   86400 v=DMARC1; p=none;
    

    Also fixes https://www.transip.nl/knowledgebase/idee/698-dns-records-zone-file-download/ to some extent (I only installed the CLI because the GUI still doesn't have a "download zonefile" option or add the records to "Download gegevens").

    opened by curry684 2
  • Bump guzzlehttp/guzzle from 7.4.4 to 7.4.5

    Bump guzzlehttp/guzzle from 7.4.4 to 7.4.5

    Bumps guzzlehttp/guzzle from 7.4.4 to 7.4.5.

    Release notes

    Sourced from guzzlehttp/guzzle's releases.

    Release 7.4.5

    See change log for changes.

    Changelog

    Sourced from guzzlehttp/guzzle's changelog.

    7.4.5 - 2022-06-20

    • Fix change in port should be considered a change in origin
    • Fix CURLOPT_HTTPAUTH option not cleared on change of origin
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump guzzlehttp/guzzle from 7.4.2 to 7.4.4

    Bump guzzlehttp/guzzle from 7.4.2 to 7.4.4

    Bumps guzzlehttp/guzzle from 7.4.2 to 7.4.4.

    Release notes

    Sourced from guzzlehttp/guzzle's releases.

    Release 7.4.4

    See change log for changes.

    Release 7.4.3

    See change log for changes.

    Changelog

    Sourced from guzzlehttp/guzzle's changelog.

    7.4.4 - 2022-06-09

    • Fix failure to strip Authorization header on HTTP downgrade
    • Fix failure to strip the Cookie header on change in host or HTTP downgrade

    7.4.3 - 2022-05-25

    • Fix cross-domain cookie leakage
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump guzzlehttp/guzzle from 7.4.2 to 7.4.3

    Bump guzzlehttp/guzzle from 7.4.2 to 7.4.3

    Bumps guzzlehttp/guzzle from 7.4.2 to 7.4.3.

    Release notes

    Sourced from guzzlehttp/guzzle's releases.

    Release 7.4.3

    See change log for changes.

    Changelog

    Sourced from guzzlehttp/guzzle's changelog.

    7.4.3 - 2022-05-25

    • Fix cross-domain cookie leakage
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump guzzlehttp/psr7 from 1.8.3 to 1.8.5

    Bump guzzlehttp/psr7 from 1.8.3 to 1.8.5

    Bumps guzzlehttp/psr7 from 1.8.3 to 1.8.5.

    Release notes

    Sourced from guzzlehttp/psr7's releases.

    1.8.5

    See change log for changes.

    1.8.4

    See change log for changes.

    Changelog

    Sourced from guzzlehttp/psr7's changelog.

    1.8.5 - 2022-03-20

    Fixed

    • Correct header value validation

    1.8.4 - 2022-03-20

    Fixed

    • Validate header values properly
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Please upgrade the code to support PHP 8

    Please upgrade the code to support PHP 8

    tipctl.phar --version

    Box Requirements Checker

    Using PHP 8.0.2 PHP is using the following php.ini file: /etc/php.ini

    Checking Box requirements: E....

    [ERROR] Your system is not ready to run the application.

    Fix the following mandatory requirements:

    • The application requires the version "^7.2.0" or greater.
    opened by MarcelRothuizen 1
  • [Feature request] add the possibility to specify a specific cli-config.json file in a CLI command

    [Feature request] add the possibility to specify a specific cli-config.json file in a CLI command

    [Feature request] add the possibility to specify a specific cli-config.json file within a specific CLI command.

    Currently it's limited to a hard-coded $HOME_DIR$/.config/transip-api/cli-config.json. If I e.g. have to switch accounts I would have to run setup again.

    Would also be fine to use the tipctl setup --no-interaction --apiUrl 'https://api.transip.nl/v6' --loginName 'yourUsername' --apiPrivateKey 'yourKeyPair' --apiUseWhitelist true however I keep getting a runtime exception saying the provided RestAPI key is invalid (setup.php line 89). How do I have to input the private key here? Tried multiple options.

    setup.php:89

    $privateKey = '';
    
    // multiline input hack
    for ($i = 0; $i < 30; $i++) {
        $privateKeyPart = $helper->ask($input, $output, $keyQuestion);
        $privateKey     .= $privateKeyPart . PHP_EOL;
    
        if (strpos($privateKeyPart, '-----END PRIVATE KEY-----') !== false || $privateKeyPart == '') {
            break;
        }
    }
    
    if (strlen($privateKey) < 2) {
        throw new RuntimeException('Provided RestAPI key is invalid');
    }
    

    Thanks!

    opened by Broekman 1
  • swagger.json or Open API?

    swagger.json or Open API?

    This might not be the right place to ask this, but it's certainly close to the fire.

    Do you also have a swagger.json (or open api 3 file) of your API? That way I can easily create it for other other platforms.

    opened by frankhommers 1
  • Discussion on how to securely handle tipctl within PHP open_basedir restrictions

    Discussion on how to securely handle tipctl within PHP open_basedir restrictions

    All files used by tipctl have to be available within the restrictions of PHPs open_basedir. The defaults used to e.g. run setup, adds files to /tmp and tries to create the configuration file under /home/user/.config/transip-api/cli-config.json. Running setup results in a series of PHP warnings and adding these folders to open_basedir or disabling open_basedir restrictions is a not really a good practice.

    For now I managed by temporarily disabling the open_basedir restrictions to run the setup and after re-enabling, adding the configuration folder (/home/user/.config/transip-api/) to open_basedir

    Anyhow, created this ticket see if a way of working was maybe already existent or of not, discuss on how to handle this securely. Thanks!

    When running setup:

    Checking API connection to endpoint 'https://api.transip.nl/v6'
    PHP Warning:  is_dir(): open_basedir restriction in effect. File(/tmp/symfony-cache/@) is not within the allowed path(s): (/var/www/:/usr/share/webapps/) in phar:///usr/share/webapps/TransIP/tipctl.phar/vendor/symfony/cache/Traits/FilesystemCommonTrait.php on line 41
    PHP Warning:  is_file(): open_basedir restriction in effect. File(/tmp/symfony-cache/@/L/J/NN8iPTNeZtJ7PibNDwnA) is not within the allowed path(s): (/var/www/:/usr/share/webapps/) in phar:///usr/share/webapps/TransIP/tipctl.phar/vendor/symfony/cache/Traits/FilesystemTrait.php on line 62
    PHP Warning:  is_file(): open_basedir restriction in effect. File(/tmp/symfony-cache/@/J/H/FTp7JKavN6CBFmf-tlwA) is not within the allowed path(s): (/var/www/:/usr/share/webapps/) in phar:///usr/share/webapps/TransIP/tipctl.phar/vendor/symfony/cache/Traits/FilesystemTrait.php on line 62
    PHP Warning:  is_file(): open_basedir restriction in effect. File(/tmp/symfony-cache/@/L/J/NN8iPTNeZtJ7PibNDwnA) is not within the allowed path(s): (/var/www/:/usr/share/webapps/) in phar:///usr/share/webapps/TransIP/tipctl.phar/vendor/symfony/cache/Traits/FilesystemTrait.php on line 62
    PHP Warning:  is_dir(): open_basedir restriction in effect. File(/tmp/symfony-cache/@/L/J/) is not within the allowed path(s): (/var/www/:/usr/share/webapps/) in phar:///usr/share/webapps/TransIP/tipctl.phar/vendor/symfony/cache/Traits/FilesystemCommonTrait.php on line 116
    PHP Warning:  is_file(): open_basedir restriction in effect. File(/tmp/symfony-cache/@/J/H/FTp7JKavN6CBFmf-tlwA) is not within the allowed path(s): (/var/www/:/usr/share/webapps/) in phar:///usr/share/webapps/TransIP/tipctl.phar/vendor/symfony/cache/Traits/FilesystemTrait.php on line 62
    PHP Warning:  is_dir(): open_basedir restriction in effect. File(/tmp/symfony-cache/@/J/H/) is not within the allowed path(s): (/var/www/:/usr/share/webapps/) in phar:///usr/share/webapps/TransIP/tipctl.phar/vendor/symfony/cache/Traits/FilesystemCommonTrait.php on line 116
    
    API connection successful
    PHP Warning:  is_dir(): open_basedir restriction in effect. File(/user/.config/transip-api) is not within the allowed path(s): (/var/www/:/usr/share/webapps/) in phar:///usr/share/webapps/TransIP/tipctl.phar/vendor/symfony/filesystem/Filesystem.php on line 97
    PHP Warning:  is_dir(): open_basedir restriction in effect. File(/user/.config/transip-api) is not within the allowed path(s): (/var/www/:/usr/share/webapps/) in phar:///usr/share/webapps/TransIP/tipctl.phar/vendor/symfony/filesystem/Filesystem.php on line 102
    
    In Setup.php line 124:
    
      Config directory '/user/.config/transip-api' could not be created
    
    setup [--apiUrl [APIURL]] [--loginName LOGINNAME] [--apiPrivateKey APIPRIVATEKEY] [--apiUseWhitelist [APIUSEWHITELIST]] [--format [FORMAT]]
    
    PHP Warning:  is_file(): open_basedir restriction in effect. File(/tmp/symfony-cache/@/60037c08348023.48298829) is not within the allowed path(s): (/var/www/:/usr/share/webapps/) in phar:///usr/share/webapps/TransIP/tipctl.phar/vendor/symfony/cache/Traits/FilesystemCommonTrait.php on line 181
    
    opened by Broekman 0
  • Change the field order of the output of domain:dns:getzonefile

    Change the field order of the output of domain:dns:getzonefile

    Please consider to change the field order of the output of domain:dns:getzonefile to match the argument order of other commands in tipctl.

    The zone file output looks like:

    @                    AAAA  3600 2a01:7c8:3:1337::27
    @                    MX    3600 10 @
    @                    TXT   3600 "v=spf1 ~all"
    this                 A     300  195.60.214.12
    transip-A._domainkey CNAME 3600 _dkim-A.transip.email.
    transip-B._domainkey CNAME 3600 _dkim-B.transip.email.
    transip-C._domainkey CNAME 3600 _dkim-C.transip.email.
    www                  CNAME 3600 @
    _dmarc               TXT   3600 "v=DMARC1; p=none;"
    

    This results in this order: While the argument order of a command is: . The latter order also matches the order in the web portel of TransIP. ;-) It's nice and predictable when the order is consistent.

    opened by systeembeheer-rtvu 0
Releases(v6.24.0)
Simple wayback interface for archive.org.

Wayback machine API Simple wayback interface for archive.org. ?? Installation & Basic Usage To install the package call Composer and execute the follo

Baraja packages 3 Mar 12, 2022
DigitalOcean API v2 client for Symfony and API Platform

DigitalOcean Bundle for Symfony and API Platform DunglasDigitalOceanBundle allows using the DigitalOcean API from your Symfony and API Platform projec

Kévin Dunglas 25 Jul 27, 2022
This package is a simple API laravel wrapper for Pokemontcg with a sleek Model design for API routes and authentication.

This package is a simple API laravel wrapper for Pokemontcg with a sleek Model design for API routes and authentication.

Daniel Henze 3 Aug 29, 2022
API SDK for OpenTrade Commerce API: Taobao, Alibaba, JD, 1688, Aliexpress, Ebay.

OtapiPhpClient Create Client $client = new OtClient($key, $secret, $lang); key (Access Key) secret (Secret for access key) language (2 symbol lang id

OpenTrade Commerce 5 Sep 20, 2022
Fanmade project using Twitter API and Marvel API.

Project Marvel Memories A fanmade project in PHP using API Twitter V2, Marvel API and Github action scheduler. What about? Posts a random cover with d

Julien SCHMITT 15 Dec 17, 2022
Nexmo REST API client for PHP. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.

Client Library for PHP Support Notice This library and it's associated packages, nexmo/client and nexmo/client-core have transitioned into a "Maintena

Nexmo 75 Sep 23, 2022
API client for ThePay - payment gate API

This is the official highly compatible public package of The Pay SDK which interacts with The Pay's REST API. To get started see examples below.

ThePay.cz s.r.o. 3 Oct 27, 2022
Code Quiz MonoRepo (API, API Client, App)

Code Quiz Welcome to the Code Quiz Open Source project from How To Code Well. This is an Open Source project that includes an API and an App for the d

How To Code Well 2 Nov 20, 2022
OpenAI API Client is a component-oriented, extensible client library for the OpenAI API. It's designed to be faster and more memory efficient than traditional PHP libraries.

OpenAI API Client in PHP (community-maintained) This library is a component-oriented, extensible client library for the OpenAI API. It's designed to b

Mounir R'Quiba 6 Jun 14, 2023
PHP library for the Stripe API.

Stripe PHP bindings The Stripe PHP library provides convenient access to the Stripe API from applications written in the PHP language. It includes a p

Stripe 3.3k Jan 5, 2023
A simple PHP GitHub API client, Object Oriented, tested and documented.

PHP GitHub API A simple Object Oriented wrapper for GitHub API, written with PHP. Uses GitHub API v3 & supports GitHub API v4. The object API (v3) is

KNP Labs 2k Jan 7, 2023
A PHP library for communicating with the Twilio REST API and generating TwiML.

twilio-php The default branch name for this repository has been changed to main as of 07/27/2020. Documentation The documentation for the Twilio API c

Twilio 1.4k Jan 2, 2023
A PHP library for the Campaign Monitor API

createsend A PHP library which implements the complete functionality of the Campaign Monitor API. Installation Composer If you use Composer, you can r

Campaign Monitor 287 Jan 6, 2023
PHP 5.3+ library which helps you to interact with the DigitalOcean API

DigitalOcean The version 2 of the API will be available soon ! Please visit DigitalOceanV2 and contribute :) This PHP 5.3+ library helps you to intera

Antoine Kirk 156 Jul 30, 2022
PHP library for the GitHub API v3

GitHub API v3 - PHP Library Currently under construction. Overview Provides access to GitHub API v3 via an Object Oriented PHP library. The goal of th

Darren Rees 62 Jul 28, 2022
Twitter REST API for PHP 5.3+

README The Wid'op Twitter REST library is a modern PHP 5.3+ API allowing you to easily interact with Twitter 1.1. In order to sign your request with t

Wid'op 24 Aug 10, 2020
A DigitalOcean API bridge for Laravel

Laravel DigitalOcean Laravel DigitalOcean was created by, and is maintained by Graham Campbell, and is a DigitalOcean PHP API Client bridge for Larave

Graham Campbell 421 Dec 20, 2022
A GitHub API bridge for Laravel

Laravel GitHub Laravel GitHub was created by, and is maintained by Graham Campbell, and is a PHP GitHub API bridge for Laravel. It utilises my Laravel

Graham Campbell 547 Dec 30, 2022
PHP library to use IOTA REST API to help node management and tangle queries

iota.php About PHP library to use IOTA REST API to help node management and tangle queries. Please be aware that this library is in an early developme

IOTA Community 45 Dec 13, 2022