Lembrando que para este processo já deveremos ter efetuado a autenticação e estarmos em posse do token.
<?php
$cliente_vigoweb = "https://web01.vigo.com.br";
$token = "ADQUIRIDO ANTERIORMENTE NO PROCESSO DE AUTENTICAÇÃO";
//----------------------------------------------------------------------------------------------
// Upload do arquivo
//----------------------------------------------------------------------------------------------
$nome_arquivo = "documento.png"; // Este arquivo deve estar na pasta raiz do script, caso contrário informar o caminho completo
$tipo_arquivo = "image/png";
$post = array("file" => new cURLFile($nome_arquivo, $tipo_arquivo, "uploadged.tmp"));
$curl1 = curl_init();
curl_setopt($curl1, CURLOPT_POST, 1);
curl_setopt($curl1, CURLOPT_URL, $cliente_vigoweb . '/api/app_uploadged');
curl_setopt($curl1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl1, CURLOPT_HTTPHEADER, ['Content-Type: multipart/form-data', "Authorization: Bearer " . $token]);
curl_setopt($curl1, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($curl1);
curl_close ($curl1);
//----------------------------------------------------------------------------------------------
// Dados do registro
//----------------------------------------------------------------------------------------------
$id_cliente = 1;
$curl2 = curl_init();
curl_setopt($curl2, CURLOPT_POST, 1);
curl_setopt($curl2, CURLOPT_URL, $cliente_vigoweb . '/api/app_insertged');
curl_setopt($curl2, CURLOPT_POSTFIELDS, '{ "id": 0, "id_empresa": 9999, "id_cliente": ' . $id_cliente . ', "tipo": "' . strtoupper(substr($tipo_arquivo, -3)) . '", "descricao": "Descrição do arquivo" }');
curl_setopt($curl2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl2, CURLOPT_HTTPHEADER, ['Content-Type: application/json', "Authorization: Bearer " . $token]);
$result = curl_exec($curl2);
curl_close($curl2);
echo $result;
?>