Skip to content

Commit f460caf

Browse files
Merge pull request #88 from Wei18/dependabot/submodules/Submodule/github/rest-api-description-b2ff88e
Bump Submodule/github/rest-api-description from `a0508ce` to `b2ff88e`
2 parents aa5ddc6 + c14fd67 commit f460caf

File tree

5 files changed

+942
-66
lines changed

5 files changed

+942
-66
lines changed

Sources/billing/Client.swift

+191
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,197 @@ public struct Client: APIProtocol {
3838
private var converter: Converter {
3939
client.converter
4040
}
41+
/// Get billing usage report for an organization
42+
///
43+
/// Gets a report of the total usage for an organization. To use this endpoint, you must be an administrator of an organization within an enterprise or an organization account.
44+
///
45+
/// **Note:** This endpoint is only available to organizations with access to the enhanced billing platform. For more information, see "[About the enhanced billing platform](https://docs.github.com/billing/using-the-new-billing-platform)."
46+
///
47+
/// - Remark: HTTP `GET /organizations/{org}/settings/billing/usage`.
48+
/// - Remark: Generated from `#/paths//organizations/{org}/settings/billing/usage/get(billing/get-github-billing-usage-report-org)`.
49+
public func billing_sol_get_hyphen_github_hyphen_billing_hyphen_usage_hyphen_report_hyphen_org(_ input: Operations.billing_sol_get_hyphen_github_hyphen_billing_hyphen_usage_hyphen_report_hyphen_org.Input) async throws -> Operations.billing_sol_get_hyphen_github_hyphen_billing_hyphen_usage_hyphen_report_hyphen_org.Output {
50+
try await client.send(
51+
input: input,
52+
forOperation: Operations.billing_sol_get_hyphen_github_hyphen_billing_hyphen_usage_hyphen_report_hyphen_org.id,
53+
serializer: { input in
54+
let path = try converter.renderedPath(
55+
template: "/organizations/{}/settings/billing/usage",
56+
parameters: [
57+
input.path.org
58+
]
59+
)
60+
var request: HTTPTypes.HTTPRequest = .init(
61+
soar_path: path,
62+
method: .get
63+
)
64+
suppressMutabilityWarning(&request)
65+
try converter.setQueryItemAsURI(
66+
in: &request,
67+
style: .form,
68+
explode: true,
69+
name: "year",
70+
value: input.query.year
71+
)
72+
try converter.setQueryItemAsURI(
73+
in: &request,
74+
style: .form,
75+
explode: true,
76+
name: "month",
77+
value: input.query.month
78+
)
79+
try converter.setQueryItemAsURI(
80+
in: &request,
81+
style: .form,
82+
explode: true,
83+
name: "day",
84+
value: input.query.day
85+
)
86+
try converter.setQueryItemAsURI(
87+
in: &request,
88+
style: .form,
89+
explode: true,
90+
name: "hour",
91+
value: input.query.hour
92+
)
93+
converter.setAcceptHeader(
94+
in: &request.headerFields,
95+
contentTypes: input.headers.accept
96+
)
97+
return (request, nil)
98+
},
99+
deserializer: { response, responseBody in
100+
switch response.status.code {
101+
case 200:
102+
let contentType = converter.extractContentTypeIfPresent(in: response.headerFields)
103+
let body: Components.Responses.billing_usage_report_org.Body
104+
let chosenContentType = try converter.bestContentType(
105+
received: contentType,
106+
options: [
107+
"application/json"
108+
]
109+
)
110+
switch chosenContentType {
111+
case "application/json":
112+
body = try await converter.getResponseBodyAsJSON(
113+
Components.Schemas.billing_hyphen_usage_hyphen_report.self,
114+
from: responseBody,
115+
transforming: { value in
116+
.json(value)
117+
}
118+
)
119+
default:
120+
preconditionFailure("bestContentType chose an invalid content type.")
121+
}
122+
return .ok(.init(body: body))
123+
case 400:
124+
let contentType = converter.extractContentTypeIfPresent(in: response.headerFields)
125+
let body: Components.Responses.bad_request.Body
126+
let chosenContentType = try converter.bestContentType(
127+
received: contentType,
128+
options: [
129+
"application/json",
130+
"application/scim+json"
131+
]
132+
)
133+
switch chosenContentType {
134+
case "application/json":
135+
body = try await converter.getResponseBodyAsJSON(
136+
Components.Schemas.basic_hyphen_error.self,
137+
from: responseBody,
138+
transforming: { value in
139+
.json(value)
140+
}
141+
)
142+
case "application/scim+json":
143+
body = try await converter.getResponseBodyAsJSON(
144+
Components.Schemas.scim_hyphen_error.self,
145+
from: responseBody,
146+
transforming: { value in
147+
.application_scim_plus_json(value)
148+
}
149+
)
150+
default:
151+
preconditionFailure("bestContentType chose an invalid content type.")
152+
}
153+
return .badRequest(.init(body: body))
154+
case 403:
155+
let contentType = converter.extractContentTypeIfPresent(in: response.headerFields)
156+
let body: Components.Responses.forbidden.Body
157+
let chosenContentType = try converter.bestContentType(
158+
received: contentType,
159+
options: [
160+
"application/json"
161+
]
162+
)
163+
switch chosenContentType {
164+
case "application/json":
165+
body = try await converter.getResponseBodyAsJSON(
166+
Components.Schemas.basic_hyphen_error.self,
167+
from: responseBody,
168+
transforming: { value in
169+
.json(value)
170+
}
171+
)
172+
default:
173+
preconditionFailure("bestContentType chose an invalid content type.")
174+
}
175+
return .forbidden(.init(body: body))
176+
case 500:
177+
let contentType = converter.extractContentTypeIfPresent(in: response.headerFields)
178+
let body: Components.Responses.internal_error.Body
179+
let chosenContentType = try converter.bestContentType(
180+
received: contentType,
181+
options: [
182+
"application/json"
183+
]
184+
)
185+
switch chosenContentType {
186+
case "application/json":
187+
body = try await converter.getResponseBodyAsJSON(
188+
Components.Schemas.basic_hyphen_error.self,
189+
from: responseBody,
190+
transforming: { value in
191+
.json(value)
192+
}
193+
)
194+
default:
195+
preconditionFailure("bestContentType chose an invalid content type.")
196+
}
197+
return .internalServerError(.init(body: body))
198+
case 503:
199+
let contentType = converter.extractContentTypeIfPresent(in: response.headerFields)
200+
let body: Components.Responses.service_unavailable.Body
201+
let chosenContentType = try converter.bestContentType(
202+
received: contentType,
203+
options: [
204+
"application/json"
205+
]
206+
)
207+
switch chosenContentType {
208+
case "application/json":
209+
body = try await converter.getResponseBodyAsJSON(
210+
Components.Responses.service_unavailable.Body.jsonPayload.self,
211+
from: responseBody,
212+
transforming: { value in
213+
.json(value)
214+
}
215+
)
216+
default:
217+
preconditionFailure("bestContentType chose an invalid content type.")
218+
}
219+
return .serviceUnavailable(.init(body: body))
220+
default:
221+
return .undocumented(
222+
statusCode: response.status.code,
223+
.init(
224+
headerFields: response.headerFields,
225+
body: responseBody
226+
)
227+
)
228+
}
229+
}
230+
)
231+
}
41232
/// Get GitHub Actions billing for an organization
42233
///
43234
/// Gets the summary of the free and paid GitHub Actions minutes used.

0 commit comments

Comments
 (0)