1: | <?php |
2: | |
3: | declare(strict_types=1); |
4: | |
5: | /* |
6: | * This file has been auto generated by Jane, |
7: | * |
8: | * Do no edit it directly. |
9: | */ |
10: | |
11: | namespace NxSys\Library\Clients\Brex\API\Expenses; |
12: | |
13: | class Client extends \NxSys\Library\Clients\Brex\API\Expenses\Runtime\Client\Client |
14: | { |
15: | /** |
16: | * List expenses under the same account. Admin and bookkeeper have access to any expense, and regular users can only access their own. |
17: | * |
18: | * @param array $queryParameters { |
19: | * |
20: | * @var array $expand[] |
21: | * @var array $user_id[] |
22: | * @var array $parent_expense_id[] |
23: | * @var string $cursor |
24: | * @var int $limit |
25: | * } |
26: | * |
27: | * @param string $fetch Fetch mode to use (can be OBJECT or RESPONSE) |
28: | * |
29: | * @return \NxSys\Library\Clients\Brex\API\Expenses\Model\PageExpandableExpense|\Psr\Http\Message\ResponseInterface|null |
30: | * |
31: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\ListExpensesBadRequestException |
32: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\ListExpensesUnauthorizedException |
33: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\ListExpensesForbiddenException |
34: | */ |
35: | public function listExpenses(array $queryParameters = [], string $fetch = self::FETCH_OBJECT) |
36: | { |
37: | return $this->executeEndpoint(new \NxSys\Library\Clients\Brex\API\Expenses\Endpoint\ListExpenses($queryParameters), $fetch); |
38: | } |
39: | |
40: | /** |
41: | The `uri` will be a pre-signed S3 URL allowing you to upload the receipt securely. This URL can only be used for a `PUT` operation and expires 30 minutes after its creation. Once your upload is complete, we will try to match the receipt with existing expenses. |
42: | |
43: | Refer to these [docs](https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html) on how to upload to this pre-signed S3 URL. We highly recommend using one of AWS SDKs if they're available for your language to upload these files. |
44: | |
45: | * |
46: | * @param \NxSys\Library\Clients\Brex\API\Expenses\Model\ReceiptMatchRequest $requestBody |
47: | * @param string $fetch Fetch mode to use (can be OBJECT or RESPONSE) |
48: | * |
49: | * @return \NxSys\Library\Clients\Brex\API\Expenses\Model\CreateAsyncFileUploadResponse|\Psr\Http\Message\ResponseInterface|null |
50: | * |
51: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\ReceiptMatchBadRequestException |
52: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\ReceiptMatchUnauthorizedException |
53: | */ |
54: | public function receiptMatch(Model\ReceiptMatchRequest $requestBody, string $fetch = self::FETCH_OBJECT) |
55: | { |
56: | return $this->executeEndpoint(new \NxSys\Library\Clients\Brex\API\Expenses\Endpoint\ReceiptMatch($requestBody), $fetch); |
57: | } |
58: | |
59: | /** |
60: | * Get an expense by its ID. |
61: | * |
62: | * @param array $queryParameters { |
63: | * |
64: | * @var array $expand[] |
65: | * } |
66: | * |
67: | * @param string $fetch Fetch mode to use (can be OBJECT or RESPONSE) |
68: | * |
69: | * @return \NxSys\Library\Clients\Brex\API\Expenses\Model\ExpandableExpense|\Psr\Http\Message\ResponseInterface|null |
70: | * |
71: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\GetExpenseBadRequestException |
72: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\GetExpenseUnauthorizedException |
73: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\GetExpenseForbiddenException |
74: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\GetExpenseNotFoundException |
75: | */ |
76: | public function getExpense(string $expenseId, array $queryParameters = [], string $fetch = self::FETCH_OBJECT) |
77: | { |
78: | return $this->executeEndpoint(new \NxSys\Library\Clients\Brex\API\Expenses\Endpoint\GetExpense($expenseId, $queryParameters), $fetch); |
79: | } |
80: | |
81: | /** |
82: | * Update an expense. Admin and bookkeeper have access to any expense, and regular users can only access their own. |
83: | * |
84: | * @param \NxSys\Library\Clients\Brex\API\Expenses\Model\UpdateExpenseRequest $requestBody |
85: | * @param string $fetch Fetch mode to use (can be OBJECT or RESPONSE) |
86: | * |
87: | * @return \NxSys\Library\Clients\Brex\API\Expenses\Model\Expense|\Psr\Http\Message\ResponseInterface|null |
88: | * |
89: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\UpdateExpenseBadRequestException |
90: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\UpdateExpenseUnauthorizedException |
91: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\UpdateExpenseForbiddenException |
92: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\UpdateExpenseNotFoundException |
93: | */ |
94: | public function updateExpense(string $expenseId, Model\UpdateExpenseRequest $requestBody, string $fetch = self::FETCH_OBJECT) |
95: | { |
96: | return $this->executeEndpoint(new \NxSys\Library\Clients\Brex\API\Expenses\Endpoint\UpdateExpense($expenseId, $requestBody), $fetch); |
97: | } |
98: | |
99: | /** |
100: | The `uri` will be a pre-signed S3 URL allowing you to upload the receipt securely. This URL can only be used for a `PUT` operation and expires 30 minutes after its creation. Once your upload is complete, we will try to match the receipt with existing expenses. |
101: | |
102: | Refer to these [docs](https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html) on how to upload to this pre-signed S3 URL. We highly recommend using one of AWS SDKs if they're available for your language to upload these files. |
103: | |
104: | * |
105: | * @param \NxSys\Library\Clients\Brex\API\Expenses\Model\ReceiptUploadRequest $requestBody |
106: | * @param string $fetch Fetch mode to use (can be OBJECT or RESPONSE) |
107: | * |
108: | * @return \NxSys\Library\Clients\Brex\API\Expenses\Model\CreateAsyncFileUploadResponse|\Psr\Http\Message\ResponseInterface|null |
109: | * |
110: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\ReceiptUploadBadRequestException |
111: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\ReceiptUploadUnauthorizedException |
112: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\ReceiptUploadForbiddenException |
113: | * @throws \NxSys\Library\Clients\Brex\API\Expenses\Exception\ReceiptUploadNotFoundException |
114: | */ |
115: | public function receiptUpload(string $expenseId, Model\ReceiptUploadRequest $requestBody, string $fetch = self::FETCH_OBJECT) |
116: | { |
117: | return $this->executeEndpoint(new \NxSys\Library\Clients\Brex\API\Expenses\Endpoint\ReceiptUpload($expenseId, $requestBody), $fetch); |
118: | } |
119: | |
120: | public static function create($httpClient = null, array $additionalPlugins = [], array $additionalNormalizers = []) |
121: | { |
122: | if (null === $httpClient) { |
123: | $httpClient = \Http\Discovery\Psr18ClientDiscovery::find(); |
124: | $plugins = []; |
125: | $uri = \Http\Discovery\Psr17FactoryDiscovery::findUrlFactory()->createUri('https://platform.brexapis.com'); |
126: | $plugins[] = new \Http\Client\Common\Plugin\AddHostPlugin($uri); |
127: | if (count($additionalPlugins) > 0) { |
128: | $plugins = array_merge($plugins, $additionalPlugins); |
129: | } |
130: | $httpClient = new \Http\Client\Common\PluginClient($httpClient, $plugins); |
131: | } |
132: | $requestFactory = \Http\Discovery\Psr17FactoryDiscovery::findRequestFactory(); |
133: | $streamFactory = \Http\Discovery\Psr17FactoryDiscovery::findStreamFactory(); |
134: | $normalizers = [new \Symfony\Component\Serializer\Normalizer\ArrayDenormalizer(), new \NxSys\Library\Clients\Brex\API\Expenses\Normalizer\JaneObjectNormalizer()]; |
135: | if (count($additionalNormalizers) > 0) { |
136: | $normalizers = array_merge($normalizers, $additionalNormalizers); |
137: | } |
138: | $serializer = new \Symfony\Component\Serializer\Serializer($normalizers, [new \Symfony\Component\Serializer\Encoder\JsonEncoder(new \Symfony\Component\Serializer\Encoder\JsonEncode(), new \Symfony\Component\Serializer\Encoder\JsonDecode(['json_decode_associative' => true]))]); |
139: | |
140: | return new static($httpClient, $requestFactory, $serializer, $streamFactory); |
141: | } |
142: | } |
143: |