Compare commits

...

270 commits
v0.1 ... master

Author SHA1 Message Date
8ac7aa47f7
add workflow_dispatch to main build
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 49s
2025-03-30 18:12:37 -07:00
e194debb96
update envrc to better zvm_direnv 2025-03-25 09:32:38 -07:00
e0e09fb19e
add no-bin option as recommended in zig 0.14.0 rlease notes
https://ziglang.org/download/0.14.0/release-notes.html\#Incremental-Compilation
2025-03-23 16:24:20 -07:00
8421fd9e55
merge pr #6 allowing dependency on service model 2025-03-23 16:17:04 -07:00
9e8b3a6fc6
fix json serialization for null/empty maps 2025-03-21 09:59:33 -07:00
34c097e45f
update nominated zig url 2025-03-20 23:28:38 -07:00
ffe3941dbe
allow workflow dispatch on zig previous 2025-03-20 23:24:38 -07:00
cdaf924867
update readme generally and for new branch strategy 2025-03-20 19:57:14 -07:00
6c106c1c71
correct refs in workflows 2025-03-20 19:23:20 -07:00
f325ef4236
update example for zig 0.14.0 2025-03-20 09:00:35 -07:00
30d46261b7
use updated build system for model path 2025-03-20 08:53:47 -07:00
86483ec84d
update gitea ci 2025-03-20 08:25:20 -07:00
4f16553410
update to zig 0.14.0 2025-03-20 08:18:37 -07:00
12e24b01ad
zig 0.14.0 upgrade: merge zig-develop branch 2025-03-20 03:20:43 -07:00
Simon Hartcher
220d45ab20 fix: missing module imports 2025-03-13 15:43:32 +11:00
Simon Hartcher
71495a4d1d chore: add codegen to paths 2025-03-13 14:46:15 +11:00
Simon Hartcher
303af8661c fix: make modules depend on codegen 2025-03-13 14:32:03 +11:00
8c68dd6902
add support for raw responses beginning with name of single field in response struct 2025-02-05 13:24:09 -08:00
96e2b7bbc1
support for timestamp as f128 (more)
f128 is not really the correct data type long term. More information on the exact details are
https://smithy.io/2.0/aws/protocols/aws-json-1_1-protocol.html and
https://smithy.io/2.0/spec/protocol-traits.html\#timestampformat-trait

But...it will hold all our values and parses correctly, so we can use it for now
2025-02-05 13:23:55 -08:00
acd6589909
add support for raw responses beginning with name of single field in response struct 2025-02-05 13:22:52 -08:00
78b36e2316
support for timestamp as f128 (more)
f128 is not really the correct data type long term. More information on the exact details are
https://smithy.io/2.0/aws/protocols/aws-json-1_1-protocol.html and
https://smithy.io/2.0/spec/protocol-traits.html\#timestampformat-trait

But...it will hold all our values and parses correctly, so we can use it for now
2025-02-05 13:21:53 -08:00
b369c29e84
manually set latest mach to remove confusion 2025-02-05 13:14:10 -08:00
e3bb4142d6
update example dependency
All checks were successful
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 51s
aws-zig nightly build / build-zig-nightly (push) Successful in 1m35s
2024-12-19 09:04:42 -08:00
4313f8585b
update dependency for example
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 41s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 28s
aws-zig nightly build / build-zig-nightly (push) Failing after 1m35s
2024-12-19 08:58:46 -08:00
e02fb699fc
move away from deprecated API
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 39s
aws-zig nightly build / build-zig-nightly (push) Failing after 1m21s
2024-12-19 08:54:30 -08:00
dfda8e77d6
move away from deprecated API
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m45s
2024-12-19 08:53:57 -08:00
35fad85c13
add .envrc 2024-12-19 08:48:37 -08:00
88d7e99d6b
add a build option to disable LLVM 2024-12-19 08:43:25 -08:00
0cda404b0a
remove build status note from README
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 24s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 28s
aws-zig nightly build / build-zig-nightly (push) Failing after 2m49s
2024-10-27 08:35:48 -07:00
5aa191c415
clean up ci workflows
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m36s
2024-10-27 08:31:15 -07:00
370011eb1e
workaround for zig issue 21815 2024-10-27 08:12:28 -07:00
debb4dab60
update example dependencies
All checks were successful
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 49s
aws-zig nightly build / build-zig-nightly (push) Successful in 1m33s
2024-10-26 18:50:58 -07:00
6240225db2
workaround for zig issue 21815
Some checks failed
aws-zig nightly build / build-zig-nightly (push) Failing after 1m47s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 2m10s
2024-10-26 18:33:30 -07:00
0adebe10da
add build status note to readme
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m32s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 27s
aws-zig nightly build / build-zig-nightly (push) Failing after 27s
2024-10-17 12:01:21 -07:00
0892914c5b
add build status note to readme
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 23s
aws-zig nightly build / build-zig-nightly (push) Failing after 28s
2024-10-17 12:00:42 -07:00
97b784f8e3
cleanup main, re-enable riscv64-linux 2024-10-17 12:00:20 -07:00
4fa30a70cc
more ci stuff
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 16s
aws-zig nightly build / build-zig-nightly (push) Failing after 27s
2024-10-17 11:28:54 -07:00
9497db373c
ci failing with panic that does not happen locally
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 28s
aws-zig nightly build / build-zig-nightly (push) Failing after 34s
2024-10-17 11:08:14 -07:00
3d78705ea5
update to latest zig nominated
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 26s
aws-zig nightly build / build-zig-nightly (push) Failing after 3m36s
2024-10-17 10:54:01 -07:00
1e2b3a6759
add smoke test step to speed local tests
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m31s
2024-10-17 10:02:55 -07:00
908c9d2d42
add diagnostics option to rest calls
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m30s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 35s
aws-zig nightly build / build-zig-nightly (push) Failing after 39s
2024-08-27 13:37:36 -07:00
1fdff0bacd
include credenitals in logging control (tie to signing)
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m31s
2024-08-27 11:42:07 -07:00
1fe39007c5
add logging control useful for build scripts
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m32s
2024-08-27 11:30:23 -07:00
c5cb3dde29
Remove extra fields in request (AWS is sensitive to them) 2024-08-27 10:40:52 -07:00
f5663fd84d
allow serializeMap to work with optionals
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m28s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 1m28s
aws-zig nightly build / build-zig-nightly (push) Failing after 33s
2024-08-26 16:01:21 -07:00
c056dbb0ff
add diagnostics for failures
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m31s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 1m30s
aws-zig nightly build / build-zig-nightly (push) Failing after 26s
2024-08-23 16:03:37 -07:00
9e8198cee4
also override iam region for signing requests
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m29s
2024-08-23 14:49:19 -07:00
43238a97eb
add iam global endpoint exception
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m29s
2024-08-23 14:40:56 -07:00
b048b1193d
update to latest smithy
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m31s
2024-08-23 14:01:51 -07:00
f85eb4caf1
add hack to allow import in build scripts
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m28s
2024-08-23 13:50:30 -07:00
0bd583cae0
allow use in build scripts
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Failing after 21s
2024-08-23 13:17:52 -07:00
3b35936ac6
disable wasi again
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m30s
2024-08-23 12:59:56 -07:00
262cdefe12
TLS 1.3 should be behind us now
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Failing after 1m10s
2024-08-23 12:56:21 -07:00
238952d127
add iam getRole test
This test triggers the scenario that a required response element exists, which
forces our check for "we do not expect data for this call" to be comptime.
It previously was accidentally runtime, which was solved by making
expected_body_field_len a comptime var.
2024-08-23 12:53:58 -07:00
38b51c768b
reformat test targets 2024-08-23 12:16:30 -07:00
86877ca264
update example to latest sdk
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m28s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 1m30s
aws-zig nightly build / build-zig-nightly (push) Failing after 34s
2024-08-19 09:48:45 -07:00
e5b662873a
omit most automatically added headers
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m28s
2024-08-19 09:42:00 -07:00
a9f99c0205
add failing test for duplicate header values 2024-08-19 09:41:39 -07:00
c1c40644ac
fix nightly cron schedule
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 1m30s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 1m30s
aws-zig nightly build / build-zig-nightly (push) Failing after 35s
2024-07-08 17:09:50 -07:00
927871c59e
add check step for usage with zls
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 2m10s
aws-zig nightly build / build-zig-nightly (push) Successful in 2m14s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 1m27s
2024-07-01 18:54:58 -07:00
7298c6d3ee
...and, remove the old ones
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m25s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m16s
aws-zig nightly build / build-zig-nightly (push) Successful in 3m16s
2024-07-01 15:23:41 -07:00
4bfd9cb7bc
upgrade example dependencies
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 4m2s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m15s
aws-zig nightly build / build-zig-nightly (push) Failing after 2m57s
2024-07-01 14:51:16 -07:00
3e89ec468a
utf16leToUtf8 -> utf16LeToUtf8 (capital L)
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m11s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m13s
aws-zig nightly build / build-zig-nightly (push) Failing after 2m39s
2024-07-01 14:18:40 -07:00
d84246333c
update smithy dependency
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m7s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m10s
aws-zig nightly build / build-zig-nightly (push) Failing after 1m16s
2024-07-01 14:03:59 -07:00
f558b058e1
use explicit splitScalar
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m6s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m7s
aws-zig nightly build / build-zig-nightly (push) Failing after 48s
2024-07-01 13:45:29 -07:00
e665b94683
badges use branch of the workflow, not branch of the code
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m30s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m29s
aws-zig nightly build / build-zig-nightly (push) Failing after 1m8s
2024-07-01 13:08:48 -07:00
dd6a87a034
CrossTarget -> std.Target.Query
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m41s
2024-07-01 12:55:49 -07:00
61592f039d
fix license in build.zig.zon
Some checks failed
AWS-Zig Build / build-zig-amd64-host (push) Successful in 2m56s
aws-zig nightly build / build-zig-nightly (push) Failing after 2m54s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m41s
2024-06-08 10:17:40 -07:00
c8f625068d
upgrade github workflow
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 2m56s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m43s
2024-06-07 08:40:44 -07:00
ffbbf21303
upgrade to zig 0.13.0
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m38s
2024-06-07 08:26:56 -07:00
a659c99350
re-enable windows test for 0.13/LLVM 18, update README
All checks were successful
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m5s
aws-zig nightly build / build-zig-nightly (push) Successful in 3m32s
2024-06-04 17:34:33 -07:00
981d5579f1
update to compatible package version
All checks were successful
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m5s
aws-zig nightly build / build-zig-nightly (push) Successful in 3m1s
2024-06-04 17:04:11 -07:00
3307eb6b8f
update mach/nightly jobs to disambiguate package versions
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 2m49s
aws-zig nightly build / build-zig-nightly (push) Failing after 2m45s
2024-06-04 16:58:28 -07:00
332aa1a855
update example to zig 0.13-dev.365 (zig nominated build 2024.05)
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 45s
aws-zig nightly build / build-zig-nightly (push) Failing after 2m47s
2024-06-04 16:35:52 -07:00
7d80f42a3e
update to zig 0.13-dev.365 (zig nominated build 2024.05)
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 1m57s
aws-zig nightly build / build-zig-nightly (push) Failing after 3m49s
2024-06-04 14:53:09 -07:00
be9a52ed6a
update readme, mostly remove TLS 1.3 warning/update mach nominated
Some checks are pending
AWS-Zig Build / build-zig-amd64-host (push) Waiting to run
2024-06-04 14:23:31 -07:00
e847af6d4c
update build badges to use Gitea 1.22.0 built-in badges
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m47s
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 1m28s
2024-05-30 13:28:39 -07:00
c60c40f627
we are not mutating headers, so do not ask for mutable headers
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m3s
2024-05-15 13:47:33 -07:00
c40539b7b0
remove "zig" from package name
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m13s
2024-05-15 13:19:46 -07:00
007f2f588a
switch to setup-zig for other builds/schedule nightly
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 2m34s
2024-04-29 09:48:24 -07:00
dc5f040a2f
use setup-zig action in main build
All checks were successful
AWS-Zig Build / build-zig-amd64-host (push) Successful in 3m13s
2024-04-29 09:42:15 -07:00
3887e630d6
turn off schedule for github actions (should only apply to gitea) 2024-04-29 09:38:17 -07:00
c825ef72fe
disable windows tests on github
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 3m5s
2024-04-23 08:55:56 -07:00
52a5865caa
github actions: update checkout version/identifiers
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 3m5s
2024-04-23 08:32:54 -07:00
bf4097cd5b
add latest major zig version status to README 2024-04-23 08:28:24 -07:00
18d8258eaf
pin nightly/nominated zig workflows to zig-develop branch
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 3m10s
2024-04-23 08:07:10 -07:00
b49bb9ad90
update build.zig.zon to latest package
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 3m4s
2024-04-22 14:13:21 -07:00
a0773971f2
change format of published tar file
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 2m31s
2024-04-22 13:57:36 -07:00
484b504090
add paths to build.zig.zon
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 2m33s
2024-04-22 09:17:10 -07:00
45e87cf202
move example build to the end so we still get a package
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 2m30s
2024-04-22 08:27:21 -07:00
99a61c0bd2
update aws-zig to zig 0.12.0 (example will still fail)
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 2m25s
2024-04-22 08:23:01 -07:00
b2c8fc5f3c
update README for riscv64 situation
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 6m56s
aws-zig nightly build / build-zig-nightly (push) Failing after 1m46s
2024-04-02 18:41:26 -07:00
62973bf4bf
update example
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Successful in 3m46s
aws-zig nightly build / build-zig-nightly (push) Failing after 1m11s
2024-04-02 18:30:27 -07:00
2f5f9edb36
markdown adjustment on README 2024-04-02 18:20:37 -07:00
b1b2a6cc7a
add example build at the end so we have models to use for the sample
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 2m38s
aws-zig nightly build / build-zig-nightly (push) Failing after 54s
2024-04-02 18:00:08 -07:00
e74a0e9456
get build LLVM-approved (riscv64-linux disabled for now)
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 3m8s
aws-zig nightly build / build-zig-nightly (push) Failing after 1m0s
2024-04-02 17:49:45 -07:00
723e0b0989
add commented out "normal test" pattern 2024-04-02 17:47:50 -07:00
a3117eea54
update name of build job to what it actually does
Some checks failed
aws-zig mach nominated build / build-zig-nominated-mach-latest (push) Failing after 21m29s
aws-zig nightly build / build-zig-nightly (push) Failing after 1m9s
2024-04-02 13:00:13 -07:00
afdc75c1c6
stop the zig build DOS attack on the CI infrastructure
Some checks failed
aws-zig nightly build / build-zig-nightly (push) Waiting to run
aws-zig mach nominated build / build-zig-nightly (push) Has been cancelled
2024-04-02 12:54:01 -07:00
e6634d3c0f
shell32 has been removed, use USERPROFILE env var instead
Some checks failed
aws-zig mach nominated build / build-zig-nightly (push) Failing after 1h21m14s
aws-zig nightly build / build-zig-nightly (push) Failing after 10m24s
2024-04-02 11:05:17 -07:00
57e994f80f
upgrade to working smithy 2024-04-02 11:04:40 -07:00
d46cb9c28b
update smithy
Some checks failed
aws-zig mach nominated build / build-zig-nightly (push) Failing after 1m11s
aws-zig nightly build / build-zig-nightly (push) Failing after 1m1s
2024-04-02 10:26:33 -07:00
7dcf3d3a2e
upgrade to nominated zig 2024.3.0-mach (0.12.0-dev.3180+83e578a18)
Some checks failed
aws-zig mach nominated build / build-zig-nightly (push) Failing after 28m36s
aws-zig nightly build / build-zig-nightly (push) Failing after 57s
There were significant changes to the way HTTP operates since 0.11,
effecting client operations, but more substantially, the server
implementation, which effected the test harness.

std.http.Headers was removed, including the getFirstValue function, which
needed to be replicated. On the plus side, a std.http.Header struct was
added, identical to our own structure, so I have removed out own header
in favor of stdlib.

On the Http client side, I have switched to use the fetch API. Proxy
support is built in, but we are using (mostly) our own implementation
for now, with the remaining conversion left as a TODO item. Raw URIs are
now supported, so the workaround for issue 17015 has been removed. Large
payloads should also be fixed, but this has not been tested.

The standard library now adds the content-length header
(unconditionally), which is a decision of dubious nature. I have removed
the addition of content-length, which also means it is not present
during signing. This should be allowed.

Dependency loop on fieldTransformer was fixed. This should have been
a problem on zig 0.11, but was not. This effected the API for the json
parsing, but we were not using that. At the call site, these did not
need to be specified as references.

With the http server no longer doing all the allocations it once was,
the test harness now has a lot more allocations to perform. To alleviate
the bookeeping, this was moved to an Arena allocator. The client,
which is really what is under test, continues to use the allocator
passed.
2024-04-02 09:27:42 -07:00
d442671275
upgrade zig build gen build command to zig 0.12
This removes the copied Package.zig as we can now use the actual package
manager and look at our available dependencies in build.zig. This may
break again later as I believe lazy dependencies are planned, which will
have us search for a solution to tell the build system we're expecting
this dependency.
2024-03-30 15:26:24 -07:00
213627c305
update README to latest zig nominated 2024-03-30 08:25:50 -07:00
47ab9f6064
update service list, add S3 back 2024-03-30 08:25:21 -07:00
866a89d8ae
add sudo to actions 2024-03-30 08:17:59 -07:00
b8df9e3610
attempt to address github action complaints 2024-03-30 08:17:59 -07:00
d1d0b294d7
seperate github workflows 2024-03-30 08:17:58 -07:00
8a80cbda4a
Action incompatibility across gitea/github makes this a bit too tough rn 2024-03-30 08:17:57 -07:00
444173afd2
rename jobs 2024-03-30 08:17:56 -07:00
b6cdb6f7a7
move workflow actions to .github for use on both platforms 2024-03-30 08:17:56 -07:00
f7106d0904
add nightly, with versioning 2024-03-30 08:17:55 -07:00
3f5e49662f
start a 0.12 branch 2024-03-30 08:17:40 -07:00
6df02b1074
switch sqs query test (json) with sts query test (xml) and fix response parsing
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 5m22s
2024-02-29 20:41:03 -08:00
55298f7575
skip sqs, which changed from query to json protocol, and update S3 test
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 4m18s
2024-02-29 16:59:10 -08:00
298f895bfe
update aws models to 2024-02-28 release
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 4m39s
2024-02-29 13:54:50 -08:00
79d73cf09f
support for enum, document, and...dear lord...unit 2024-02-29 13:53:32 -08:00
3a027b6cd9
codegen support for more reserved words 2024-02-29 13:49:57 -08:00
69d8151ac8
make sigv4_name and arn_namespace optional 2024-02-29 13:49:21 -08:00
2db4188dbc
more logging to help codegen debug 2024-02-29 13:46:58 -08:00
2c9a80e363
update snake case to handle space followed by single character at end of string 2024-02-29 13:43:48 -08:00
d06c8da3bb
update README - S3 support seems more there than not rn 2024-02-29 08:18:14 -08:00
e46a008bc5
update service list
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 3m32s
2024-02-24 09:50:30 -08:00
31324c7e83
support for server verification of clients that do not pass x-amz-content-sha256
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 5m17s
2024-02-24 09:43:36 -08:00
ed48901c92
update service list - getting close
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 4m22s
2024-02-22 12:16:41 -08:00
7e3796d416
update service list
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 4m21s
2024-02-16 08:35:24 -08:00
69da301de2
ec2 gets tls 1.3
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 3m56s
2024-02-07 07:21:09 -08:00
7f80ae45f0
update TLS 1.2-only service list
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 4m54s
2024-01-31 11:15:14 -08:00
dd1d86476c
update service list
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 4m4s
2024-01-27 11:46:27 -08:00
888f763bbe
update service list
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 3m52s
2024-01-23 16:37:02 -08:00
fcf456137f
exclude zig-develop* branches from main build CI
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 4m46s
2024-01-22 14:27:45 -08:00
a5929c2d5e
Merge pull request #2 from melhindi/replace_var_with_const
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 4m24s
Replace var with const where applicable - this passes all tests on v0.11
2024-01-22 10:36:23 -08:00
melhindi
7a5fa0bb2e Replace var with const where applicable
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m37s
2024-01-18 13:43:45 +01:00
645cc1d7ca
update README to reflect good/bad/ugly on TLS 1.3 support
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 4m45s
2024-01-09 15:43:46 -08:00
14666da73f
clean up build (includes two fixes for arm 32 bit)
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 5m38s
2024-01-09 15:22:03 -08:00
90e690ffc2
add package publish step
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 8m55s
2024-01-08 14:53:48 -08:00
69535b20d0
actions runs expire, use generic package instead 2024-01-08 14:45:49 -08:00
c0cfe8ba51
significant progress made, so removing "services with support" section
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 8m28s
2024-01-08 13:45:23 -08:00
2d7f20a9b1
update services list 2024-01-08 13:43:07 -08:00
d08d0f338f
Using ".?" actually causes a panic, which we do not want in this path
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m20s
NOTE: This only fixes the top level Authorization header. A malformed
header can still cause havoc
2023-10-25 00:00:11 -07:00
825d93720a
add verifiyServerRequest/change verify to WASM-friendly type
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 8m20s
2023-10-22 10:25:07 -07:00
ed96e2ff66
support for >16KiB requests
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m44s
2023-10-21 10:20:09 -07:00
de914ccedf
update dependency in example
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 6m59s
2023-09-15 09:35:14 -07:00
db19041b96
fix memory leak when AWS_ENDPOINT_URL is used
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m4s
2023-09-15 09:05:53 -07:00
5d13b48da6
adjust modules
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 9m27s
2023-09-14 15:11:03 -07:00
f8b6b3e521
make aws_signing module ready 2023-09-14 14:06:35 -07:00
4e4920e782
add dependency tree 2023-09-14 14:05:35 -07:00
ab38d4c71e
update service list 2023-09-14 14:05:12 -07:00
ff1e6f4cf3
aws_signing: provide signing verification based on a server http request
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m41s
2023-09-08 21:45:36 -07:00
0e48c6f79b
clean up test logging/add header logging in test 2023-09-08 21:43:20 -07:00
6ae8b68786
allow static signing iime in aws.zig/use static time for testing 2023-09-08 21:42:38 -07:00
037fb7f1ae
allow aws_http to use static signing time 2023-09-08 21:41:08 -07:00
fd0e80f00c
allow datetime to timestamp conversion from outside date.zig 2023-09-08 21:40:03 -07:00
67b24641e2
allow trailing Z on iso 8601 parsing 2023-09-08 21:39:19 -07:00
2d42bbf464
comment date logging functions so type can be used at comptime 2023-09-08 21:38:28 -07:00
e8bfd0af6d
codegen: clean up generated file names
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 8m22s
2023-09-06 12:11:12 -07:00
c3944edf43
add example/update readmes
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 8m58s
2023-09-05 18:31:08 -07:00
090c06c403
add explicit smithy dependency of aws module
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m51s
2023-09-05 16:38:37 -07:00
eb91d40edf
try ustar format
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 6m50s
2023-09-05 16:16:27 -07:00
281247897b
create posix tar files
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m34s
2023-09-05 15:44:55 -07:00
7637289c3e
use tar transformation to get the archive zig package manager approved
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m40s
2023-09-05 13:56:39 -07:00
d30d9cf3a9
add commented signing/update artifact filename
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m4s
2023-09-05 13:39:35 -07:00
8365c176a6
try environment context
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 6m34s
2023-09-05 13:27:05 -07:00
7573f01ae3
${{ github.server_url }} not currently working (gitea issue 23276)
Some checks reported warnings
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Has been cancelled
2023-09-05 13:25:22 -07:00
74143e90ba
add more diagnostics for upload issue
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 7m48s
2023-09-05 13:12:34 -07:00
27dfede802
add actions runtime token/url to environment
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 8m8s
2023-09-05 13:00:40 -07:00
6a12f1e3e5
produce build artifact that includes generated models
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 6m49s
2023-09-05 12:49:57 -07:00
6755099c36
apparently we do need that check?
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m36s
2023-08-30 13:49:56 -07:00
fb34e556f7
re-enable demo code 2023-08-30 13:49:29 -07:00
d82728602b
fix failing test 2023-08-30 13:40:08 -07:00
d50503a2f8
initial commit on code to work around 17015. Sourced from std lib 2023-08-30 13:32:27 -07:00
55f662f5d7
add failing test for double encoding issue 2023-08-30 12:59:10 -07:00
f2a3a967c7
add comment to indicate root cause of the tagResource issue 2023-08-30 12:55:40 -07:00
c011f1d7f9
update user agent (we have not used AWS Common Runtime for a while 2023-08-30 12:55:06 -07:00
8926fd439e
clean up response code output 2023-08-30 12:54:35 -07:00
1376a7f898
indicate that test is being skipped and why 2023-08-30 12:53:42 -07:00
b2ae14657d
update readme with proxy instructions 2023-08-29 15:22:13 -07:00
88c8643eb3
fix url encoding early out 2023-08-29 15:21:47 -07:00
993f9cd91c
allow -vvv as option on demo 2023-08-29 15:21:15 -07:00
9c403d0e18
cleanup output/remove one demo due to signature issue
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 6m11s
2023-08-29 12:47:22 -07:00
316a388b79
support chunked encoding (but not streaming really) 2023-08-29 12:36:18 -07:00
0a1de2b967
support chunked transfer encoding to create failing test 2023-08-29 11:56:23 -07:00
70bd8dafa5
add more information on unexpected response 2023-08-29 11:56:01 -07:00
48fc41c4b8
return cleaner error when response not expected 2023-08-29 11:30:21 -07:00
bd72bbb1f3
clean up output (first pass) 2023-08-29 11:29:50 -07:00
9d7df078b0
0.11 now looks for std_options decl in root 2023-08-29 11:29:16 -07:00
812ad96a66
add proxy support 2023-08-29 11:24:34 -07:00
58949127d6
add help to demo program 2023-08-29 07:26:11 -07:00
591f4c43e0
all services from main.zig now under test
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 6m28s
2023-08-28 17:49:30 -07:00
71978e2386
add comment in demo on TLS v1.3 situation 2023-08-28 16:42:43 -07:00
a8dddfbd30
update readme and talk about TLS 1.3 (sigh)
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 6m59s
2023-08-28 14:25:59 -07:00
c8cba54fe0
ec2_query_with_input under test
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m9s
2023-08-28 13:30:39 -07:00
6d3e820bd1
add ec2_query_no_input 2023-08-28 13:10:16 -07:00
eafb62aee9
fix leaks/re-enable rest_json_1 tests
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 6m28s
2023-08-28 12:37:34 -07:00
a1e13775f7
update readme 2023-08-28 12:18:38 -07:00
827c90ab8a
add rest json tests (skippped -still leaky
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 5m15s
2023-08-27 23:20:07 -07:00
034172c7b3
progress indicator on main 2023-08-27 23:18:55 -07:00
1b2b51be88
fix path not added on override 2023-08-27 23:18:15 -07:00
c39fc940b9
fix map pattern in zig 0.11 2023-08-27 23:07:35 -07:00
edf931f827
add json_1_1_query_no_input: ecs listClusters runtime
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 5m16s
2023-08-27 21:53:39 -07:00
2718e064cd
add json_1_1_query_with_input: ecs listClusters runtime
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after -2562047h47m16.854775808s
2023-08-27 21:48:27 -07:00
298a15a656
add json_1_0_query_no_input: dynamodb listTables runtime
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after -2562047h47m16.854775808s
2023-08-27 21:35:31 -07:00
10e44aa751
add json 1.0 query with input/dynamodb listTables
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 5m19s
2023-08-27 21:26:37 -07:00
98d27b3145
add sqs listQueues call and request method/target testing
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 5m15s
2023-08-27 19:55:45 -07:00
47fbda5e06
drop sentinal on return to snakeToCamel 2023-08-27 19:54:51 -07:00
17ff6d3e82
clean up test code in prep for other main stuff
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 5m18s
2023-08-27 18:12:32 -07:00
06429e0853
re-enable full demo code
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 5m16s
2023-08-27 17:36:26 -07:00
978bb783e3
all url tests passing
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 5m1s
2023-08-27 17:17:14 -07:00
9fd98c176a
remove TODO 2023-08-27 17:05:20 -07:00
a4f9ca969c
bring EC2 back to par with 0.9.0 implementation
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 1m15s
2023-08-27 17:04:49 -07:00
a580983c89
add failing test, reproducing issue in src/main 2023-08-27 16:29:20 -07:00
7c40549200
cast two more content_length u64 to usize
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 4m12s
2023-08-27 15:43:40 -07:00
8361431754
clean up/add credential handling
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 1m26s
2023-08-27 15:24:58 -07:00
26adee27e6
update README
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 3m25s
2023-08-27 12:12:04 -07:00
779d940849
remove demos that are not yet functional 2023-08-27 11:54:31 -07:00
ae07f82dd5
disable ec2_query demos temporarily 2023-08-27 11:40:56 -07:00
b2bd779de7
re-enable whatever test that was 2023-08-27 11:03:38 -07:00
18a0ed5ce4
refalldecls for referenced dependencies 2023-08-27 11:01:40 -07:00
c84baf5152
address test leaks 2023-08-27 10:53:51 -07:00
06040ac649
you CAN fix stupid! 2023-08-27 10:53:30 -07:00
1c072c454d
fix crash. leaks remain 2023-08-27 10:34:39 -07:00
1ba69e38ed
unit test crashing and leaky, but not failing 2023-08-27 10:29:01 -07:00
5df8ae8edd
make json pass tests (2 tests skipped) 2023-08-27 10:26:22 -07:00
c6524ff1d3
fix dupeAndUnescape return value 2023-08-27 09:47:38 -07:00
088638661a
fix tests in url.zig 2023-08-27 09:35:54 -07:00
a3fd680ea6
comment log_level for tests 2023-08-27 09:23:38 -07:00
94fa9acc44
address aws_http test errors 2023-08-27 09:20:19 -07:00
b84120efe3
fix issues with aws_signing tests 2023-08-27 09:13:41 -07:00
13ffb063c5
fix tests in case.zig 2023-08-27 08:40:40 -07:00
35eec03142
remove cache and git installation
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 6m36s
2023-08-25 17:41:01 -07:00
633ccac42d
update actions to reuse global cache
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 6m19s
2023-08-25 17:29:52 -07:00
fb36dc83d5
skip processing if all hashes match
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m8s
2023-08-25 17:20:51 -07:00
a58a2cba41
adjustments in prep for hash optimization 2023-08-25 15:34:52 -07:00
26daedbd72
rename model readme as project does not have its own readme 2023-08-25 14:52:00 -07:00
6a109f2a5a
update model readme 2023-08-25 14:51:33 -07:00
2f36f82363
factor out hashing so we can use it in codegen 2023-08-25 14:43:40 -07:00
db4037111f
use copied package manager to fetch models
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m18s
With this commit, I have copied a significant amount of package
manager code from zig 0.11 that was not included in the standard
library. This code is in Package.zig, and was augmented/adjusted
to handle the use case of arbitrary data files rather than the
specialized zig project use case of the package manager. It
arguably should be in a seperate repo, but we can move this later
if needed.
2023-08-25 11:31:18 -07:00
49089ff433
address windows build
All checks were successful
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Successful in 7m36s
2023-08-15 08:50:22 -07:00
db82116103
cast to usize for non 64 bit targets
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 4m10s
2023-08-15 08:41:06 -07:00
bad00517a3
create path if it does not exist
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 2m34s
2023-08-15 07:38:57 -07:00
c3da8c067f
only close if opened
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 1m33s
2023-08-15 07:26:14 -07:00
4a6f49ac3b
add verbose flag to diagnose CI/CD
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 1m40s
2023-08-15 07:21:56 -07:00
4dacca2d46
introduce verbosity 2023-08-14 22:56:19 -07:00
cbb6116a61
add test step
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 2m49s
2023-08-14 22:45:46 -07:00
b603822679
make codegen releasesafe 2023-08-14 22:41:09 -07:00
3b249d62b9
better codegen but without caching
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 2m4s
2023-08-14 22:38:37 -07:00
6b97fed499
codegen: revert build to mostly stock, update to 0.11 2023-08-14 16:24:51 -07:00
2d977b03a4
update CI/CD
Some checks failed
AWS-Zig Build / build-zig-0.11.0-amd64-host (push) Failing after 1m50s
2023-08-14 13:47:14 -07:00
024ba8ee8f
fix edge case on ec2 query 2023-08-14 13:44:26 -07:00
9e02196dd0
clean compile on 0.11, not yet fully functional
Some checks failed
AWS-Zig Build / build-zig-0.9-amd64-host (push) Failing after 1m41s
2023-08-14 10:06:28 -07:00
64dc7b5772
add thoughts on adding git rev 2023-08-14 08:49:23 -07:00
3834fe6a49
add thoughts on code gen 2023-08-14 08:48:01 -07:00
4bc8889d32
fix more compile errors - leaving 2 nasty ones 2023-08-05 16:26:09 -07:00
63ff325068
find/fix more fmt errors 2023-08-05 13:29:23 -07:00
c18de40edd
remove git version info 2023-08-05 13:29:07 -07:00
d04e7b22e4
remove root pem - should no longer need this 2023-08-05 13:24:48 -07:00
f95de3457c
need to address testing 2023-08-05 13:11:30 -07:00
1950cdaba0
delete unneeded files 2023-08-05 13:11:03 -07:00
e49ed1b7ad
found fix for comptime decl stuff, avoid more codegen changes 2023-08-05 13:00:55 -07:00
e5b3f03681
fix compile errors on date.zig 2023-08-05 13:00:19 -07:00
5ee53a493d
some codegen changes needed/investigation into http_query (see note)
This fixes main compile issues. Problems that remain:

* json is borked for objects with key/value keys that need to be coerced
* currently all request structures need an http_query declaration, and this may be a hard requirement
* need to revisit all the places where we are reading http response bodies
* there are 35 compile errors that do not have reference traces and will take a while to track down
2023-08-05 12:41:04 -07:00
e3ec2b8c2e
delete duplicate test 2023-08-04 16:42:38 -07:00
8760662cf7
partial upgrade of build 2023-08-04 16:40:24 -07:00
5be18af930
upgrade servicemodel.zig 2023-08-04 16:39:15 -07:00
46cc57ac2d
upgrade json.zig (this needs revisiting) 2023-08-04 16:38:49 -07:00
9f5c380b66
upgrade date.zig 2023-08-04 16:38:19 -07:00
c2dc55c8ff
move smithy outside repo (what about this test.json) 2023-08-04 16:37:46 -07:00
e6f7ab003d
zig fmt to take care of easy stuff 2023-08-04 10:07:58 -07:00
cfdf4a3141
these are old changes, but I believe part of 0.11 from a while back 2023-08-04 10:06:54 -07:00
317 changed files with 5151 additions and 1373031 deletions

8
.envrc Normal file
View file

@ -0,0 +1,8 @@
# vi: ft=sh
# shellcheck shell=bash
if ! has zvm_direnv_version || ! zvm_direnv_version 2.0.0; then
source_url "https://git.lerch.org/lobo/zvm-direnv/raw/tag/2.0.0/direnvrc" "sha256-8Umzxj32hFU6G0a7Wrq0KTNDQ8XEuje2A3s2ljh/hFY="
fi
use zig 0.14.0

View file

@ -1,39 +1,79 @@
name: AWS-Zig Build
run-name: ${{ github.actor }} building AWS Zig SDK
on: [push]
on:
workflow_dispatch:
push:
branches:
- 'master'
env:
ACTIONS_RUNTIME_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ACTIONS_RUNTIME_URL: ${{ env.GITHUB_SERVER_URL }}/api/actions_pipeline/
jobs:
build-zig-0.9-amd64-host:
build-zig-amd64-host:
runs-on: ubuntu-latest
# Need to use the default container with node and all that, so we can
# use JS-based actions like actions/checkout@v3...
# container:
# image: alpine:3.15.0
env:
ZIG_VERSION: 0.9.0
ARCH: x86_64
steps:
- name: Check out repository code
uses: actions/checkout@v3
# ARCH is fine, but we can't substitute directly because zig
# uses x86_64 instead of amd64. They also use aarch64 instead of arm64.
uses: actions/checkout@v4
- name: Setup Zig
uses: mlugg/setup-zig@v1.2.1
with:
version: 0.14.0
- name: Run tests
run: zig build test --verbose
# Zig build scripts don't have the ability to import depenedencies directly
# (https://github.com/ziglang/zig/issues/18164). We can allow downstream
# build scripts to import aws with a few tweaks, but we can't @import("src/aws.zig")
# until we have our models built. So we have to have the build script
# basically modified, only during packaging, to allow this use case
#
# However, arm64/linux isn't quite fully tier 1 yet, so this is more of a
# TODO: https://github.com/ziglang/zig/issues/2443
- run: wget -q https://ziglang.org/download/${ZIG_VERSION}/zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz
- run: tar x -C /usr/local -f zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz
- run: ln -s /usr/local/zig-linux-${ARCH}-${ZIG_VERSION}/zig /usr/local/bin/zig
- run: apt update && apt install --no-install-recommends git
- run: (cd codegen && zig build test)
- run: zig build -Dfetch # implicitly does a codegen
- run: zig build test
- run: zig build -Dtarget=arm-linux
- run: zig build -Dtarget=x86_64-windows
- run: zig build -Dtarget=aarch64-linux
- run: zig build -Dtarget=riscv64-linux
- run: zig build -Dtarget=x86_64-macos
- run: zig build -Dtarget=aarch64-macos
# Zig package manager expects everything to be inside a directory in the archive,
# which it then strips out on download. So we need to shove everything inside a directory
# the way GitHub/Gitea does for repo archives
#
# Also, zig tar process doesn't handle gnu format for long names, nor does it seam to
# handle posix long name semantics cleanly either. ustar works. This
# should be using git archive, but we need our generated code to be part of it
- name: Package source code with generated models
run: |
sed -i 's#// UNCOMMENT AFTER MODEL GEN TO USE IN BUILD SCRIPTS //##' build.zig
tar -czf ${{ runner.temp }}/${{ github.sha }}-with-models.tar.gz \
--format ustar \
--exclude 'zig-*' \
*
# Something in this PR broke this transform. I don't mind removing it, but
# the PR attempts to handle situations with or without a prefix, but it
# doesn't. I have not yet determined what the problem is, though
# https://github.com/ziglang/zig/pull/19111/files
# --transform 's,^,${{ github.sha }}/,' *
# - name: Sign
# id: sign
# uses: https://git.lerch.org/lobo/action-hsm-sign@v1
# with:
# pin: ${{ secrets.HSM_USER_PIN }}
# files: ???
# public_key: 'https://emil.lerch.org/serverpublic.pem'
# - run: |
# echo "Source 0 should be ./bar: ${{ steps.sign.outputs.SOURCE_0 }}"
# - run: |
# echo "Signature 0 should be ./bar.sig: ${{ steps.sign.outputs.SIG_0 }}"
# - run: echo "URL of bar (0) is ${{ steps.sign.outputs.URL_0 }}"
# - run: |
# echo "Source 1 should be ./foo: ${{ steps.sign.outputs.SOURCE_1 }}"
# - run: |
# echo "Signature 1 should be ./foo.sig: ${{ steps.sign.outputs.SIG_1 }}"
# - run: echo "URL of foo (1) is ${{ steps.sign.outputs.URL_1 }}"
- name: Publish source code with generated models
run: |
curl --user ${{ github.actor }}:${{ secrets.PACKAGE_PUSH }} \
--upload-file ${{ runner.temp }}/${{ github.sha }}-with-models.tar.gz \
https://git.lerch.org/api/packages/lobo/generic/aws-sdk-with-models/${{ github.sha }}/${{ github.sha }}-with-models.tar.gz
- name: Build example
run: ( cd example && zig build ) # Make sure example builds
- name: Notify
uses: https://git.lerch.org/lobo/action-notify-ntfy@v1
uses: https://git.lerch.org/lobo/action-notify-ntfy@v2
if: always()
with:
host: ${{ secrets.NTFY_HOST }}

View file

@ -0,0 +1,82 @@
name: aws-zig mach nominated build
on:
workflow_dispatch:
schedule:
- cron: '0 12 * * *' # noon UTC, 4AM Pacific
push:
branches:
- 'zig-mach'
env:
PKG_PREFIX: nominated-zig
jobs:
build-zig-nominated-mach-latest:
container:
# We need CAP_SYS_PTRACE for stack traces due to a regression in 0.14.0
# TODO: Remove this after https://github.com/ziglang/zig/issues/21815 is
# addressed
options: --cap-add CAP_SYS_PTRACE
runs-on: ubuntu-latest
# Need to use the default container with node and all that, so we can
# use JS-based actions like actions/checkout@v3...
# container:
# image: alpine:3.15.0
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
ref: zig-mach
- name: Setup Zig
uses: mlugg/setup-zig@v1.2.1
with:
version: mach-latest
- name: Run gen
run: zig build gen --verbose
- name: Run smoke test
run: zig build smoke-test --verbose
- name: Run full tests
run: zig build test --verbose
# Zig package manager expects everything to be inside a directory in the archive,
# which it then strips out on download. So we need to shove everything inside a directory
# the way GitHub/Gitea does for repo archives
#
# Also, zig tar process doesn't handle gnu format for long names, nor does it seam to
# handle posix long name semantics cleanly either. ustar works. This
# should be using git archive, but we need our generated code to be part of it
- name: Package source code with generated models
run: |
tar -czf ${{ runner.temp }}/${{ github.sha }}${{ env.PKG_PREFIX }}-with-models.tar.gz \
--format ustar \
--exclude 'zig-*' \
--transform 's,^,${{ github.sha }}/,' *
# - name: Sign
# id: sign
# uses: https://git.lerch.org/lobo/action-hsm-sign@v1
# with:
# pin: ${{ secrets.HSM_USER_PIN }}
# files: ???
# public_key: 'https://emil.lerch.org/serverpublic.pem'
# - run: |
# echo "Source 0 should be ./bar: ${{ steps.sign.outputs.SOURCE_0 }}"
# - run: |
# echo "Signature 0 should be ./bar.sig: ${{ steps.sign.outputs.SIG_0 }}"
# - run: echo "URL of bar (0) is ${{ steps.sign.outputs.URL_0 }}"
# - run: |
# echo "Source 1 should be ./foo: ${{ steps.sign.outputs.SOURCE_1 }}"
# - run: |
# echo "Signature 1 should be ./foo.sig: ${{ steps.sign.outputs.SIG_1 }}"
# - run: echo "URL of foo (1) is ${{ steps.sign.outputs.URL_1 }}"
- name: Publish source code with generated models
run: |
curl --user ${{ github.actor }}:${{ secrets.PACKAGE_PUSH }} \
--upload-file ${{ runner.temp }}/${{ github.sha }}${{ env.PKG_PREFIX }}-with-models.tar.gz \
https://git.lerch.org/api/packages/lobo/generic/aws-sdk-with-models/${{ github.sha }}/${{ github.sha }}${{ env.PKG_PREFIX }}-with-models.tar.gz
- name: Build example
run: ( cd example && zig build ) # Make sure example builds
- name: Notify
uses: https://git.lerch.org/lobo/action-notify-ntfy@v2
if: always()
with:
host: ${{ secrets.NTFY_HOST }}
topic: ${{ secrets.NTFY_TOPIC }}
user: ${{ secrets.NTFY_USER }}
password: ${{ secrets.NTFY_PASSWORD }}

View file

@ -0,0 +1,78 @@
name: aws-zig nightly build
on:
workflow_dispatch:
schedule:
- cron: '30 12 * * *' # 12:30 UTC, 4:30AM Pacific
push:
branches:
- 'zig-develop'
env:
PKG_PREFIX: nightly-zig
jobs:
build-zig-nightly:
container:
# We need CAP_SYS_PTRACE for stack traces due to a regression in 0.14.0
# TODO: Remove this after https://github.com/ziglang/zig/issues/21815 is
# addressed
options: --cap-add CAP_SYS_PTRACE
runs-on: ubuntu-latest
# Need to use the default container with node and all that, so we can
# use JS-based actions like actions/checkout@v3...
# container:
# image: alpine:3.15.0
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
ref: zig-develop
- name: Setup Zig
uses: mlugg/setup-zig@v1.2.1
with:
version: master
- name: Run tests
run: zig build test --verbose
# Zig package manager expects everything to be inside a directory in the archive,
# which it then strips out on download. So we need to shove everything inside a directory
# the way GitHub/Gitea does for repo archives
#
# Also, zig tar process doesn't handle gnu format for long names, nor does it seam to
# handle posix long name semantics cleanly either. ustar works. This
# should be using git archive, but we need our generated code to be part of it
- name: Package source code with generated models
run: |
tar -czf ${{ runner.temp }}/${{ github.sha }}${{ env.PKG_PREFIX }}-with-models.tar.gz \
--format ustar \
--exclude 'zig-*' \
--transform 's,^,${{ github.sha }}/,' *
# - name: Sign
# id: sign
# uses: https://git.lerch.org/lobo/action-hsm-sign@v1
# with:
# pin: ${{ secrets.HSM_USER_PIN }}
# files: ???
# public_key: 'https://emil.lerch.org/serverpublic.pem'
# - run: |
# echo "Source 0 should be ./bar: ${{ steps.sign.outputs.SOURCE_0 }}"
# - run: |
# echo "Signature 0 should be ./bar.sig: ${{ steps.sign.outputs.SIG_0 }}"
# - run: echo "URL of bar (0) is ${{ steps.sign.outputs.URL_0 }}"
# - run: |
# echo "Source 1 should be ./foo: ${{ steps.sign.outputs.SOURCE_1 }}"
# - run: |
# echo "Signature 1 should be ./foo.sig: ${{ steps.sign.outputs.SIG_1 }}"
# - run: echo "URL of foo (1) is ${{ steps.sign.outputs.URL_1 }}"
- name: Publish source code with generated models
run: |
curl --user ${{ github.actor }}:${{ secrets.PACKAGE_PUSH }} \
--upload-file ${{ runner.temp }}/${{ github.sha }}${{ env.PKG_PREFIX }}-with-models.tar.gz \
https://git.lerch.org/api/packages/lobo/generic/aws-sdk-with-models/${{ github.sha }}/${{ github.sha }}${{ env.PKG_PREFIX }}-with-models.tar.gz
- name: Build example
run: ( cd example && zig build ) # Make sure example builds
- name: Notify
uses: https://git.lerch.org/lobo/action-notify-ntfy@v2
if: always()
with:
host: ${{ secrets.NTFY_HOST }}
topic: ${{ secrets.NTFY_TOPIC }}
user: ${{ secrets.NTFY_USER }}
password: ${{ secrets.NTFY_PASSWORD }}

View file

@ -0,0 +1,84 @@
name: AWS-Zig Build
on:
workflow_dispatch:
push:
branches:
- 'zig-0.13'
env:
ACTIONS_RUNTIME_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ACTIONS_RUNTIME_URL: ${{ env.GITHUB_SERVER_URL }}/api/actions_pipeline/
jobs:
build-zig-amd64-host:
runs-on: ubuntu-latest
# Need to use the default container with node and all that, so we can
# use JS-based actions like actions/checkout@v3...
# container:
# image: alpine:3.15.0
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
ref: zig-0.13
- name: Setup Zig
uses: mlugg/setup-zig@v1.2.1
with:
version: 0.13.0
- name: Run tests
run: zig build test --verbose
# Zig build scripts don't have the ability to import depenedencies directly
# (https://github.com/ziglang/zig/issues/18164). We can allow downstream
# build scripts to import aws with a few tweaks, but we can't @import("src/aws.zig")
# until we have our models built. So we have to have the build script
# basically modified, only during packaging, to allow this use case
#
# Zig package manager expects everything to be inside a directory in the archive,
# which it then strips out on download. So we need to shove everything inside a directory
# the way GitHub/Gitea does for repo archives
#
# Also, zig tar process doesn't handle gnu format for long names, nor does it seam to
# handle posix long name semantics cleanly either. ustar works. This
# should be using git archive, but we need our generated code to be part of it
- name: Package source code with generated models
run: |
sed -i 's#// UNCOMMENT AFTER MODEL GEN TO USE IN BUILD SCRIPTS //##' build.zig
tar -czf ${{ runner.temp }}/${{ github.sha }}-with-models.tar.gz \
--format ustar \
--exclude 'zig-*' \
*
# Something in this PR broke this transform. I don't mind removing it, but
# the PR attempts to handle situations with or without a prefix, but it
# doesn't. I have not yet determined what the problem is, though
# https://github.com/ziglang/zig/pull/19111/files
# --transform 's,^,${{ github.sha }}/,' *
# - name: Sign
# id: sign
# uses: https://git.lerch.org/lobo/action-hsm-sign@v1
# with:
# pin: ${{ secrets.HSM_USER_PIN }}
# files: ???
# public_key: 'https://emil.lerch.org/serverpublic.pem'
# - run: |
# echo "Source 0 should be ./bar: ${{ steps.sign.outputs.SOURCE_0 }}"
# - run: |
# echo "Signature 0 should be ./bar.sig: ${{ steps.sign.outputs.SIG_0 }}"
# - run: echo "URL of bar (0) is ${{ steps.sign.outputs.URL_0 }}"
# - run: |
# echo "Source 1 should be ./foo: ${{ steps.sign.outputs.SOURCE_1 }}"
# - run: |
# echo "Signature 1 should be ./foo.sig: ${{ steps.sign.outputs.SIG_1 }}"
# - run: echo "URL of foo (1) is ${{ steps.sign.outputs.URL_1 }}"
- name: Publish source code with generated models
run: |
curl --user ${{ github.actor }}:${{ secrets.PACKAGE_PUSH }} \
--upload-file ${{ runner.temp }}/${{ github.sha }}-with-models.tar.gz \
https://git.lerch.org/api/packages/lobo/generic/aws-sdk-with-models/${{ github.sha }}/${{ github.sha }}-with-models.tar.gz
- name: Build example
run: ( cd example && zig build ) # Make sure example builds
- name: Notify
uses: https://git.lerch.org/lobo/action-notify-ntfy@v2
if: always()
with:
host: ${{ secrets.NTFY_HOST }}
topic: ${{ secrets.NTFY_TOPIC }}
user: ${{ secrets.NTFY_USER }}
password: ${{ secrets.NTFY_PASSWORD }}

20
.github/workflows/build.yaml vendored Normal file
View file

@ -0,0 +1,20 @@
name: Current zig version build
on:
push:
branches:
- 'master'
jobs:
build-amd64:
runs-on: ubuntu-latest
if: ${{ github.env.GITEA_ACTIONS != 'true' }}
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Setup Zig
uses: mlugg/setup-zig@v1.2.1
with:
version: 0.14.0
- name: Run tests
run: zig build test -Dbroken-windows --verbose # Github runners try to run the windows tests despite disabling foreign checks
- name: Build example
run: ( cd example && zig build ) # Make sure example builds

20
.github/workflows/zig-mach.yaml vendored Normal file
View file

@ -0,0 +1,20 @@
name: Latest mach nominated zig version build
on:
push:
branches:
- 'zig-mach*'
jobs:
build-zig-mach-latest:
runs-on: ubuntu-latest
if: ${{ github.env.GITEA_ACTIONS != 'true' }}
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Setup Zig
uses: mlugg/setup-zig@v1.2.1
with:
version: mach-latest
- name: Run tests
run: zig build test -Dbroken-windows --verbose
- name: Build example
run: ( cd example && zig build ) # Make sure example builds

20
.github/workflows/zig-nightly.yaml vendored Normal file
View file

@ -0,0 +1,20 @@
name: Nightly zig version Build
on:
push:
branches:
- 'zig-develop*'
jobs:
build-zig-nightly:
runs-on: ubuntu-latest
if: ${{ github.env.GITEA_ACTIONS != 'true' }}
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Setup Zig
uses: mlugg/setup-zig@v1.2.1
with:
version: master
- name: Run tests
run: zig build test -Dbroken-windows --verbose
- name: Build example
run: ( cd example && zig build ) # Make sure example builds

20
.github/workflows/zig-previous.yaml vendored Normal file
View file

@ -0,0 +1,20 @@
name: Previous zig version Build
on:
push:
branches:
- 'zig-0.13'
jobs:
build-amd64:
runs-on: ubuntu-latest
if: ${{ github.env.GITEA_ACTIONS != 'true' }}
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Setup Zig
uses: mlugg/setup-zig@v1.2.1
with:
version: 0.13.0
- name: Run tests
run: zig build test -Dbroken-windows --verbose # Github runners try to run the windows tests despite disabling foreign checks
- name: Build example
run: ( cd example && zig build ) # Make sure example builds

2
.gitignore vendored
View file

@ -10,3 +10,5 @@ smithy/zig-out/
libs/
src/git_version.zig
zig-out
core
.zig-cache

View file

@ -1,20 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
rqXRfboQnoZsG4q5WTP468SQvvG5
-----END CERTIFICATE-----

View file

@ -1,36 +0,0 @@
const std = @import("std");
const CopyStep = @This();
step: std.build.Step,
builder: *std.build.Builder,
from_path: []const u8 = null,
to_path: []const u8 = null,
pub fn create(
b: *std.build.Builder,
from_path_relative: []const u8,
to_path_relative: []const u8,
) *CopyStep {
var result = b.allocator.create(CopyStep) catch @panic("memory");
result.* = CopyStep{
.step = std.build.Step.init(.custom, "copy a file", b.allocator, make),
.builder = b,
.from_path = std.fs.path.resolve(b.allocator, &[_][]const u8{
b.build_root,
from_path_relative,
}) catch @panic("memory"),
.to_path = std.fs.path.resolve(b.allocator, &[_][]const u8{
b.build_root,
to_path_relative,
}) catch @panic("memory"),
};
return result;
}
fn make(step: *std.build.Step) !void {
const self = @fieldParentPtr(CopyStep, "step", step);
std.fs.copyFileAbsolute(self.from_path, self.to_path, .{}) catch |e| {
std.log.err("Error copying {s} to {s}: {s}", .{ self.from_path, self.to_path, e });
std.os.exit(1);
};
}

View file

@ -1,219 +0,0 @@
//! Publish Date: 2021_10_17
//! This file is hosted at github.com/marler8997/zig-build-repos and is meant to be copied
//! to projects that use it.
const std = @import("std");
const GitRepoStep = @This();
pub const ShaCheck = enum {
none,
warn,
err,
pub fn reportFail(self: ShaCheck, comptime fmt: []const u8, args: anytype) void {
switch (self) {
.none => unreachable,
.warn => std.log.warn(fmt, args),
.err => {
std.log.err(fmt, args);
std.os.exit(0xff);
},
}
}
};
step: std.build.Step,
builder: *std.build.Builder,
url: []const u8,
name: []const u8,
branch: ?[]const u8 = null,
sha: []const u8,
path: []const u8 = null,
sha_check: ShaCheck = .warn,
fetch_enabled: bool,
var cached_default_fetch_option: ?bool = null;
pub fn defaultFetchOption(b: *std.build.Builder) bool {
if (cached_default_fetch_option) |_| {} else {
cached_default_fetch_option = if (b.option(bool, "fetch", "automatically fetch network resources")) |o| o else false;
}
return cached_default_fetch_option.?;
}
pub fn create(b: *std.build.Builder, opt: struct {
url: []const u8,
branch: ?[]const u8 = null,
sha: []const u8,
path: ?[]const u8 = null,
sha_check: ShaCheck = .warn,
fetch_enabled: ?bool = null,
}) *GitRepoStep {
var result = b.allocator.create(GitRepoStep) catch @panic("memory");
const name = std.fs.path.basename(opt.url);
result.* = GitRepoStep{
.step = std.build.Step.init(.custom, "clone a git repository", b.allocator, make),
.builder = b,
.url = opt.url,
.name = name,
.branch = opt.branch,
.sha = opt.sha,
.path = if (opt.path) |p| (b.allocator.dupe(u8, p) catch @panic("memory")) else (std.fs.path.resolve(b.allocator, &[_][]const u8{
b.build_root,
"libs",
name,
})) catch @panic("memory"),
.sha_check = opt.sha_check,
.fetch_enabled = if (opt.fetch_enabled) |fe| fe else defaultFetchOption(b),
};
return result;
}
// TODO: this should be included in std.build, it helps find bugs in build files
fn hasDependency(step: *const std.build.Step, dep_candidate: *const std.build.Step) bool {
for (step.dependencies.items) |dep| {
// TODO: should probably use step.loop_flag to prevent infinite recursion
// when a circular reference is encountered, or maybe keep track of
// the steps encounterd with a hash set
if (dep == dep_candidate or hasDependency(dep, dep_candidate))
return true;
}
return false;
}
fn make(step: *std.build.Step) !void {
const self = @fieldParentPtr(GitRepoStep, "step", step);
std.fs.accessAbsolute(self.path, std.fs.File.OpenFlags{ .read = true }) catch {
const branch_args = if (self.branch) |b| &[2][]const u8{ " -b ", b } else &[2][]const u8{ "", "" };
if (!self.fetch_enabled) {
std.debug.print("Error: git repository '{s}' does not exist\n", .{self.path});
std.debug.print(" Use -Dfetch to download it automatically, or run the following to clone it:\n", .{});
std.debug.print(" git clone {s}{s}{s} {s} && git -C {3s} checkout {s} -b for_ziget\n", .{ self.url, branch_args[0], branch_args[1], self.path, self.sha });
std.os.exit(1);
}
{
var args = std.ArrayList([]const u8).init(self.builder.allocator);
defer args.deinit();
try args.append("git");
try args.append("clone");
// This is a bad idea, because we really want to get to the correct
// revision before we go updating submodules
// try args.append("--recurse-submodules");
try args.append(self.url);
// TODO: clone it to a temporary location in case of failure
// also, remove that temporary location before running
try args.append(self.path);
if (self.branch) |branch| {
try args.append("-b");
try args.append(branch);
}
try run(self.builder, args.items);
}
try run(self.builder, &[_][]const u8{
"git",
"-C",
self.path,
"checkout",
self.sha,
"-b",
"fordep",
});
// Now that we're on the correct revision, we can update submodules
try run(self.builder, &[_][]const u8{
"git",
"-C",
self.path,
"submodule",
"update",
"--init",
"--recursive",
});
};
try self.checkSha();
}
fn checkSha(self: GitRepoStep) !void {
if (self.sha_check == .none)
return;
const result: union(enum) { failed: anyerror, output: []const u8 } = blk: {
const result = std.ChildProcess.exec(.{
.allocator = self.builder.allocator,
.argv = &[_][]const u8{
"git",
"-C",
self.path,
"rev-parse",
"HEAD",
},
.cwd = self.builder.build_root,
.env_map = self.builder.env_map,
}) catch |e| break :blk .{ .failed = e };
try std.io.getStdErr().writer().writeAll(result.stderr);
switch (result.term) {
.Exited => |code| {
if (code == 0) break :blk .{ .output = result.stdout };
break :blk .{ .failed = error.GitProcessNonZeroExit };
},
.Signal => break :blk .{ .failed = error.GitProcessFailedWithSignal },
.Stopped => break :blk .{ .failed = error.GitProcessWasStopped },
.Unknown => break :blk .{ .failed = error.GitProcessFailed },
}
};
switch (result) {
.failed => |err| {
return self.sha_check.reportFail("failed to retreive sha for repository '{s}': {s}", .{ self.name, @errorName(err) });
},
.output => |output| {
if (!std.mem.eql(u8, std.mem.trimRight(u8, output, "\n\r"), self.sha)) {
return self.sha_check.reportFail("repository '{s}' sha does not match\nexpected: {s}\nactual : {s}\n", .{ self.name, self.sha, output });
}
},
}
}
fn run(builder: *std.build.Builder, argv: []const []const u8) !void {
{
var msg = std.ArrayList(u8).init(builder.allocator);
defer msg.deinit();
const writer = msg.writer();
var prefix: []const u8 = "";
for (argv) |arg| {
try writer.print("{s}\"{s}\"", .{ prefix, arg });
prefix = " ";
}
std.log.debug("[RUN] {s}", .{msg.items});
}
const child = try std.ChildProcess.init(argv, builder.allocator);
defer child.deinit();
child.stdin_behavior = .Ignore;
child.stdout_behavior = .Inherit;
child.stderr_behavior = .Inherit;
child.cwd = builder.build_root;
child.env_map = builder.env_map;
try child.spawn();
const result = try child.wait();
switch (result) {
.Exited => |code| if (code != 0) {
std.log.err("git clone failed with exit code {}", .{code});
std.os.exit(0xff);
},
else => {
std.log.err("git clone failed with: {}", .{result});
std.os.exit(0xff);
},
}
}
// Get's the repository path and also verifies that the step requesting the path
// is dependent on this step.
pub fn getPath(self: *const GitRepoStep, who_wants_to_know: *const std.build.Step) []const u8 {
if (!hasDependency(who_wants_to_know, &self.step))
@panic("a step called GitRepoStep.getPath but has not added it as a dependency");
return self.path;
}

135
README.md
View file

@ -1,14 +1,25 @@
AWS SDK for Zig
===============
[![Build Status](https://actions-status.lerch.org/lobo/aws-sdk-for-zig/build)](https://git.lerch.org/lobo/aws-sdk-for-zig/actions?workflow=build.yaml&state=closed)
[Zig 0.14](https://ziglang.org/download/#release-0.14.0):
**Now that 0.11 has been released, work will commence to move to the new compiler**
[![Build Status: Zig 0.14.0](https://git.lerch.org/lobo/aws-sdk-for-zig/actions/workflows/build.yaml/badge.svg)](https://git.lerch.org/lobo/aws-sdk-for-zig/actions?workflow=build.yaml&state=closed)
Current executable size for the demo is 1.7M (90k of which is the AWS PEM file,
and approximately 600K for XML services) after compiling with -Drelease-safe and
[stripping the executable after compilation](https://github.com/ziglang/zig/issues/351).
This is for x86_linux, and will vary based on services used. Tested targets:
[Last Mach Nominated Zig Version](https://machengine.org/docs/nominated-zig/):
[![Build Status: Mach nominated](https://git.lerch.org/lobo/aws-sdk-for-zig/actions/workflows/zig-mach.yaml/badge.svg)](https://git.lerch.org/lobo/aws-sdk-for-zig/actions?workflow=zig-mach.yaml&state=closed)
[Nightly Zig](https://ziglang.org/download/):
[![Build Status: Zig Nightly](https://git.lerch.org/lobo/aws-sdk-for-zig/actions/workflows/zig-nightly.yaml/badge.svg)](https://git.lerch.org/lobo/aws-sdk-for-zig/actions?workflow=zig-nightly.yaml&state=closed)
[Zig 0.13](https://ziglang.org/download/#release-0.13.0):
[![Build Status: Zig 0.13.0](https://git.lerch.org/lobo/aws-sdk-for-zig/actions/workflows/zig-previous.yaml/badge.svg)](https://git.lerch.org/lobo/aws-sdk-for-zig/actions?workflow=zig-previous.yaml&state=closed)
Current executable size for the demo is 980k after compiling with -Doptimize=ReleaseSmall
in x86_64-linux, and will vary based on services used. Tested targets:
* x86_64-linux
* riscv64-linux
@ -20,28 +31,56 @@ This is for x86_linux, and will vary based on services used. Tested targets:
Tested targets are built, but not continuously tested, by CI.
Branches
--------
* **master**: This branch tracks the latest released zig version
* **zig-0.13**: This branch tracks the previous released zig version (0.13 currently).
Support for the previous version is best effort, generally
degrading over time. Fixes will generally appear in master, then
backported into the previous version.
* **zig-mach**: This branch tracks the latest mach nominated version. A separate
branch is necessary as mach nominated is usually, but not always,
more recent than the latest production zig. Support for the mach
version is best effort.
* **zig-develop**: This branch tracks zig nightly, and is used mainly as a canary
for breaking changes that will need to be dealt with when
a new mach nominated version or new zig release appear.
Expect significant delays in any build failures.
Other branches/tags exist but are unsupported
Building
--------
`zig build` should work. It will build the code generation project, run
the code generation, then build the main project with the generated code.
`zig build` should work. It will build the code generation project, fetch model
files from upstream AWS Go SDK v2, run the code generation, then build the main
project with the generated code. Testing can be done with `zig build test`. Note that
this command tests on all supported architectures, so for a faster testing
process, use `zig build smoke-test` instead.
First time build should use `zig build -Dfetch` to fetch dependent packages
(zfetch and friends).
To make development even faster, a build option is provided to avoid the use of
LLVM. To use this, use the command `zig build -Dno-llvm smoke-test`. This
can reduce build/test time 300%. Note, however, native code generation in zig
is not yet complete, so you may see errors.
Running
-------
Using
-----
This is designed for use with the Zig package manager, and exposes a module
called "aws". Set up `build.zig.zon` and add the dependency/module to your project
as normal and the package manager should do its thing. A full example can be found
in [/example](example/build.zig.zon). This can also be used at build time in
a downstream project's `build.zig`.
Configuring the module and/or Running the demo
----------------------------------------------
This library mimics the aws c libraries for it's work, so it operates like most
other 'AWS things'. main.zig gives you a handful of examples for working with services.
For local testing or alternative endpoints, there's no real standard, so
there is code to look for `AWS_ENDPOINT_URL` environment variable that will
supersede all other configuration. Note that an alternative endpoint may
require passing in a client option to specify an different TLS root certificate
(pass null to disable certificate verification).
The [old branch](https://github.com/elerch/aws-sdk-for-zig/tree/aws-crt) exists
for posterity, and supports x86_64 linux. The old branch is deprecated.
other 'AWS things'. [/src/main.zig](src/main.zig) gives you a handful of examples
for working with services. For local testing or alternative endpoints, there's
no real standard, so there is code to look for an environment variable
`AWS_ENDPOINT_URL` variable that will supersede all other configuration.
Limitations
-----------
@ -50,13 +89,59 @@ WebIdentityToken is not yet implemented.
TODO List:
* Bump to zig 0.11 and replace zFetch with [std.http.Client](https://github.com/ziglang/zig/blob/master/lib/std/http/Client.zig)
* Json parsing is based on a fork of the 0.9.0 (maybe earlier?) json parser.
This needs a re-visit. Note also that a json.zig file is embedded/copied
from the codegen project, so that also needs a second look.
* Take a look to see about compilation speed. With codegen caching this is
reasonable, but still takes longer than needed.
* Upgrade the model files. This is a simple tasks, but I'd like the first
item on this list to be completed first.
* Implement sigv4a signing
* Implement jitter/exponential backoff
* Implement timeouts and other TODO's in the code
* Add option to cache signature keys
* Move CI to github actions based on [gittea's implementation](https://blog.gitea.io/2022/12/feature-preview-gitea-actions/)
Compiler wishlist/watchlist:
Dependency tree
---------------
* [comptime allocations](https://github.com/ziglang/zig/issues/1291) so we can read files, etc (or is there another way)
No dependencies:
* aws_authentication: base structure for credentials (only one type)
* aws_http_base: contains basic structures for http requests/results
* case: provides functions to change casing
* date: provides limited date manipulation functions
* json: custom version of earlier stdlib json parser
* xml: custom xml parser library
* url: custom url encoding
aws_credentials: Allows credential handling
aws_authentication
aws_http:
aws_http_base
aws_signing
aws_signing: handles signing of http requests
aws_http_base
aws_authentication
date
aws: main usage point for libraries
aws_http
json
url
case
date
servicemodel
xml_shaper
aws_credentials
aws_authentication
main: main entrypoint for demo executable
aws
servicemodel: Provides access to all aws service generated models
all generated model files
xml_shaper: Manages interface from xml to in memory structures
xml
date

View file

@ -1,229 +0,0 @@
//! Publish Date: 2022-01-12
//! This file is hosted at ??? and is meant to be copied
//! to projects that use it. Sample usage:
//!
//! const version = VersionStep.create(b, null);
//! exe.step.dependOn(&version.step);
const std = @import("std");
const Step = @This();
step: std.build.Step,
builder: *std.build.Builder,
version_path: []const u8,
// Creates a step that will add the git version info in a file in src/
// so it can be consumed by additional code. If version_path is not specified,
// it will default to "git_version.zig". This should be part of .gitignore
pub fn create(b: *std.build.Builder, version_path: ?[]const u8) *Step {
var result = b.allocator.create(Step) catch @panic("memory");
result.* = Step{
.step = std.build.Step.init(.custom, "create version file", b.allocator, make),
.builder = b,
.version_path = std.fs.path.resolve(b.allocator, &[_][]const u8{
b.build_root,
"src",
version_path orelse "git_version.zig",
}) catch @panic("memory"),
};
return result;
}
fn make(step: *std.build.Step) !void {
const self = @fieldParentPtr(Step, "step", step);
const file = try std.fs.createFileAbsolute(self.version_path, .{});
defer file.close();
const version = try getGitVersion(
self.builder.allocator,
self.builder.build_root,
self.builder.env_map,
);
defer version.deinit();
try file.writer().print(
\\pub const hash = "{s}";
\\pub const abbreviated_hash = "{s}";
\\pub const commit_date = "{s}";
\\pub const branch = "{s}";
\\pub const dirty = {b};
\\pub const pretty_version = "{s}";
, .{
version.hash,
version.abbreviated_hash,
version.commit_date,
version.branch,
version.dirty,
version.pretty_version,
});
}
const GitVersion = struct {
hash: []const u8,
abbreviated_hash: []const u8,
commit_date: []const u8,
branch: []const u8,
dirty: bool,
pretty_version: []const u8,
allocator: std.mem.Allocator,
const Self = @This();
pub fn deinit(self: Self) void {
self.allocator.free(self.hash);
self.allocator.free(self.abbreviated_hash);
self.allocator.free(self.commit_date);
self.allocator.free(self.branch);
self.allocator.free(self.pretty_version);
}
};
fn getGitVersion(allocator: std.mem.Allocator, git_working_root: ?[]const u8, env: anytype) !GitVersion {
// git log -1 --pretty="%H%n%h%n%ci%n%D"
// 3bf6adc13e4aa653a7b75b1b5e9c9db5215df8e1
// 3bf6adc
// 2022-01-12 12:21:28 -0800
// HEAD -> zig-native
const log_output = run(
allocator,
&[_][]const u8{
"git",
"log",
"-1",
"--pretty=%H%n%h%n%ci%n%D",
},
git_working_root,
env,
) catch |e| {
if (std.os.getenv("DRONE_COMMIT_SHA") != null)
return getGitVersionFromDrone(allocator);
return e;
};
defer allocator.free(log_output);
const line_data = try getLines(allocator, 4, log_output);
const hash = line_data[0];
const abbrev_hash = line_data[1];
const date = line_data[2];
const branch = line_data[3];
// git status --porcelain
const status_output = try run(
allocator,
&[_][]const u8{
"git",
"status",
"--porcelain",
},
git_working_root,
env,
);
const dirty = blk: {
if (status_output.len > 0) {
allocator.free(status_output);
break :blk true;
}
break :blk false;
};
const dirty_str = blk: {
if (dirty) {
break :blk " (dirty)";
}
break :blk "";
};
return GitVersion{
.hash = hash,
.abbreviated_hash = abbrev_hash,
.commit_date = date,
.branch = branch,
.allocator = allocator,
.dirty = dirty,
.pretty_version = try prettyVersion(allocator, abbrev_hash, date, dirty_str),
};
}
fn prettyVersion(allocator: std.mem.Allocator, abbrev_hash: []const u8, date: []const u8, dirty_str: []const u8) ![]const u8 {
const pretty_version: []const u8 = try std.fmt.allocPrint(
allocator,
"version {s}, committed at {s}{s}",
.{
abbrev_hash,
date,
dirty_str,
},
);
return pretty_version;
}
fn getGitVersionFromDrone(allocator: std.mem.Allocator) !GitVersion {
const abbrev_hash = std.os.getenv("DRONE_COMMIT_SHA").?[0..7]; // This isn't quite how git works, but ok
const date = std.os.getenv("DRONE_BUILD_STARTED").?; // this is a timestamp :(
return GitVersion{
.hash = std.os.getenv("DRONE_COMMIT_SHA").?,
.abbreviated_hash = abbrev_hash,
.commit_date = date,
.branch = std.os.getenv("DRONE_COMMIT_BRANCH").?,
.allocator = allocator,
.dirty = false,
.pretty_version = try prettyVersion(allocator, abbrev_hash, date, ""),
};
}
fn getLines(allocator: std.mem.Allocator, comptime line_count: u32, data: []const u8) ![line_count][]u8 {
var line: u32 = 0;
var start: u32 = 0;
var current: u32 = 0;
var line_data: [line_count][]u8 = undefined;
errdefer {
while (line > 0) {
allocator.free(line_data[line]);
line -= 1;
}
}
for (data) |c| {
// try std.io.getStdErr().writer().print("line: {d}, c: {c}, cur: {d}, strt: {d}\n", .{ line, c, current, start });
if (c == '\n') {
line_data[line] = try allocator.dupe(u8, data[start..current]);
// try std.io.getStdErr().writer().print("c: {d}, s: {d}, data: '{s}'\n", .{ current, start, line_data[line] });
start = current + 1;
line += 1;
}
current += 1;
}
return line_data;
}
// env is a std.process.BufMap, but that's private, which is a little weird tbh
fn run(allocator: std.mem.Allocator, argv: []const []const u8, cwd: ?[]const u8, env: anytype) ![]const u8 {
{
var msg = std.ArrayList(u8).init(allocator);
defer msg.deinit();
const writer = msg.writer();
var prefix: []const u8 = "";
for (argv) |arg| {
try writer.print("{s}\"{s}\"", .{ prefix, arg });
prefix = " ";
}
// std.log.debug("[RUN] {s}", .{msg.items});
}
const result = try std.ChildProcess.exec(.{
.allocator = allocator,
.argv = argv,
.cwd = cwd,
.env_map = env,
});
defer if (result.stderr.len > 0) allocator.free(result.stderr);
try std.io.getStdErr().writer().writeAll(result.stderr);
switch (result.term) {
.Exited => |code| if (code != 0) {
std.log.err("process failed with exit code: {}", .{code});
std.os.exit(0xff);
},
else => {
std.log.err("process failed due to exception: {}", .{result});
std.os.exit(0xff);
},
}
return result.stdout;
}

308
build.zig
View file

@ -1,18 +1,24 @@
const std = @import("std");
const builtin = @import("builtin");
const Builder = @import("std").build.Builder;
const GitRepoStep = @import("GitRepoStep.zig");
const CopyStep = @import("CopyStep.zig");
const tst = @import("build_test.zig");
const VersionStep = @import("VersionStep.zig");
const Builder = @import("std").Build;
const models_subdir = "codegen/sdk-codegen/aws-models/"; // note will probably not work on windows
// UNCOMMENT AFTER MODEL GEN TO USE IN BUILD SCRIPTS //pub const aws = @import("src/aws.zig");
const test_targets = [_]std.Target.Query{
.{}, // native
.{ .cpu_arch = .x86_64, .os_tag = .linux },
.{ .cpu_arch = .aarch64, .os_tag = .linux },
.{ .cpu_arch = .riscv64, .os_tag = .linux },
.{ .cpu_arch = .arm, .os_tag = .linux },
.{ .cpu_arch = .x86_64, .os_tag = .windows },
.{ .cpu_arch = .aarch64, .os_tag = .macos },
.{ .cpu_arch = .x86_64, .os_tag = .macos },
// .{ .cpu_arch = .wasm32, .os_tag = .wasi },
};
pub fn build(b: *Builder) !void {
const zfetch_repo = GitRepoStep.create(b, .{
.url = "https://github.com/truemedian/zfetch",
// .branch = "0.1.10", // branch also takes tags. Tag 0.1.10 isn't quite new enough
.sha = "271cab5da4d12c8f08e67aa0cd5268da100e52f1",
});
// Standard target options allows the person running `zig build` to choose
// what target to build for. Here we do not override the defaults, which
// means any target is allowed, and the default is native. Other options
@ -21,41 +27,60 @@ pub fn build(b: *Builder) !void {
// Standard release options allow the person running `zig build` to select
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
const mode = b.standardReleaseOptions();
const exe = b.addExecutable("demo", "src/main.zig");
const optimize = b.standardOptimizeOption(.{});
// https://github.com/ziglang/zig/issues/855
exe.addPackagePath("smithy", "smithy/src/smithy.zig");
const no_llvm = b.option(
bool,
"no-llvm",
"Disable LLVM",
) orelse false;
const broken_windows = b.option(
bool,
"broken-windows",
"Windows is broken in this environment (do not run Windows tests)",
) orelse false;
const no_bin = b.option(bool, "no-bin", "skip emitting binary") orelse false;
// TODO: Embed the current git version in the code. We can do this
// by looking for .git/HEAD (if it exists, follow the ref to /ref/heads/whatevs,
// grab that commit, and use b.addOptions/exe.addOptions to generate the
// Options file. See https://github.com/ziglang/zig/issues/14979 for usage
// example.
//
// From there, I'm not sure what the generated file looks like or quite how
// to use, but that should be easy. It may also give some ideas on the
// code gen piece itself, though it might be nice to leave as a seperate
// executable
// TODO: This executable should not be built when importing as a package.
// It relies on code gen and is all fouled up when getting imported
const exe = b.addExecutable(.{
.name = "demo",
.root_source_file = b.path("src/main.zig"),
.target = target,
.optimize = optimize,
});
exe.use_llvm = !no_llvm;
const smithy_dep = b.dependency("smithy", .{
// These are the arguments to the dependency. It expects a target and optimization level.
.target = target,
.optimize = optimize,
});
const smithy_module = smithy_dep.module("smithy");
exe.root_module.addImport("smithy", smithy_module); // not sure this should be here...
exe.setTarget(target);
exe.setBuildMode(mode);
// TODO: This does not work correctly due to https://github.com/ziglang/zig/issues/16354
//
// We are working here with kind of a weird dependency though. So we can do this
// another way
//
// TODO: These target/optimize are not correct, as we need to run the thing
// const codegen = b.anonymousDependency("codegen/", @import("codegen/build.zig"), .{
// .target = target,
// .optimize = optimize,
// });
// const codegen_cmd = b.addRunArtifact(codegen.artifact("codegen"));
// exe.step.dependOn(&codegen_cmd.step);
if (target.getOs().tag != .macos) exe.linkage = .static;
// TODO: Strip doesn't actually fully strip the executable. If we're on
// linux we can run strip on the result, probably at the expense
// of busting cache logic
exe.strip = b.option(bool, "strip", "strip exe [true]") orelse true;
const copy_deps = CopyStep.create(
b,
"zfetch_deps.zig",
"libs/zfetch/deps.zig",
);
copy_deps.step.dependOn(&zfetch_repo.step);
const version = VersionStep.create(b, null);
exe.step.dependOn(&version.step);
exe.step.dependOn(&copy_deps.step);
// This import won't work unless we're already cloned. The way around
// this is to have a multi-stage build process, but that's a lot of work.
// Instead, I've copied the addPackage and tweaked it for the build prefix
// so we'll have to keep that in sync with upstream
// const zfetch = @import("libs/zfetch/build.zig");
exe.addPackage(getZfetchPackage(b, "libs/zfetch") catch unreachable);
exe.addPackagePath("iguanaTLS", "libs/zfetch/libs/iguanaTLS/src/main.zig");
const run_cmd = exe.run();
const run_cmd = b.addRunArtifact(exe);
run_cmd.step.dependOn(b.getInstallStep());
if (b.args) |args| {
run_cmd.addArgs(args);
@ -64,73 +89,138 @@ pub fn build(b: *Builder) !void {
const run_step = b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
var test_step = try tst.addTestStep(b, mode, exe.packages.items);
test_step.dependOn(&version.step);
const cg = b.step("gen", "Generate zig service code from smithy models");
var codegen: ?*std.build.Step = null;
if (target.getOs().tag == .linux) {
// TODO: Support > linux with RunStep
// std.build.RunStep.create(null,null).cwd(std.fs.path.resolve(b.build_root, "codegen")).addArgs(...)
codegen = b.step("gen", "Generate zig service code from smithy models");
const cg = codegen.?;
cg.dependOn(&b.addSystemCommand(&.{ "/bin/sh", "-c", "cd codegen && zig build" }).step);
// This can probably be triggered instead by GitRepoStep cloning the repo
// with models
// Since codegen binary is built every time, if it's newer than our
// service manifest we know it needs to be regenerated. So this step
// will remove the service manifest if codegen has been touched, thereby
// triggering the re-gen
cg.dependOn(&b.addSystemCommand(&.{
"/bin/sh", "-c",
\\ [ ! -f src/models/service_manifest.zig ] || \
\\ [ $(find codegen -type f -newer src/models/service_manifest.zig -print -quit |wc -c) = '0' ] || \
\\ rm src/models/service_manifest.zig
}).step);
cg.dependOn(&b.addSystemCommand(&.{
"/bin/sh", "-c",
\\ mkdir -p src/models/ && \
\\ [ -f src/models/service_manifest.zig ] || \
\\ ( cd codegen/models && ../codegen *.json && mv *.zig ../../src/models )
}).step);
exe.step.dependOn(cg);
}
exe.install();
}
fn getDependency(comptime lib_prefix: []const u8, comptime name: []const u8, comptime root: []const u8) !std.build.Pkg {
const path = lib_prefix ++ "/libs/" ++ name ++ "/" ++ root;
// We don't actually care if the dependency has been checked out, as
// GitRepoStep will handle that for us
// Make sure that the dependency has been checked out.
// std.fs.cwd().access(path, .{}) catch |err| switch (err) {
// error.FileNotFound => {
// std.log.err("zfetch: dependency '{s}' not checked out", .{name});
const cg_exe = b.addExecutable(.{
.name = "codegen",
.root_source_file = b.path("codegen/src/main.zig"),
// We need this generated for the host, not the real target
.target = b.graph.host,
.optimize = if (b.verbose) .Debug else .ReleaseSafe,
});
cg_exe.root_module.addImport("smithy", smithy_module);
var cg_cmd = b.addRunArtifact(cg_exe);
cg_cmd.addArg("--models");
cg_cmd.addArg(try std.fs.path.join(
b.allocator,
&[_][]const u8{
try b.dependency("models", .{}).path("").getPath3(b, null).toString(b.allocator),
models_subdir,
},
));
cg_cmd.addArg("--output");
const cg_output_dir = cg_cmd.addOutputDirectoryArg("src/models");
if (b.verbose)
cg_cmd.addArg("--verbose");
// cg_cmd.step.dependOn(&fetch_step.step);
// TODO: this should use zig_exe from std.Build
// codegen should store a hash in a comment
// this would be hash of the exe that created the file
// concatenated with hash of input json. this would
// allow skipping generated files. May not include hash
// of contents of output file as maybe we want to tweak
// manually??
//
// return err;
// },
// else => return err,
// };
// All the hashes can be in service_manifest.zig, which
// could be fun to just parse and go nuts. Top of
// file, generator exe hash. Each import has comment
// with both input and output hash and we can decide
// later about warning on manual changes...
return std.build.Pkg{
.name = name,
.path = .{ .path = path },
};
}
pub fn getZfetchPackage(b: *std.build.Builder, comptime lib_prefix: []const u8) !std.build.Pkg {
var dependencies = b.allocator.alloc(std.build.Pkg, 4) catch unreachable;
dependencies[0] = try getDependency(lib_prefix, "iguanaTLS", "src/main.zig");
dependencies[1] = try getDependency(lib_prefix, "network", "network.zig");
dependencies[2] = try getDependency(lib_prefix, "uri", "uri.zig");
dependencies[3] = try getDependency(lib_prefix, "hzzp", "src/main.zig");
return std.build.Pkg{
.name = "zfetch",
.path = .{ .path = lib_prefix ++ "/src/main.zig" },
.dependencies = dependencies,
};
cg.dependOn(&cg_cmd.step);
exe.step.dependOn(cg);
// This allows us to have each module depend on the
// generated service manifest.
const service_manifest_module = b.createModule(.{
.root_source_file = cg_output_dir.path(b, "service_manifest.zig"),
.target = target,
.optimize = optimize,
});
service_manifest_module.addImport("smithy", smithy_module);
exe.root_module.addImport("service_manifest", service_manifest_module);
// Expose module to others
_ = b.addModule("aws", .{
.root_source_file = b.path("src/aws.zig"),
.imports = &.{
.{ .name = "smithy", .module = smithy_module },
.{ .name = "service_manifest", .module = service_manifest_module },
},
});
// Expose module to others
_ = b.addModule("aws-signing", .{
.root_source_file = b.path("src/aws_signing.zig"),
.imports = &.{.{ .name = "smithy", .module = smithy_module }},
});
// Similar to creating the run step earlier, this exposes a `test` step to
// the `zig build --help` menu, providing a way for the user to request
// running the unit tests.
const test_step = b.step("test", "Run unit tests");
// // Creates a step for unit testing. This only builds the test executable
// // but does not run it.
// const unit_tests = b.addTest(.{
// .root_source_file = .{ .path = "src/aws.zig" },
// .target = target,
// .optimize = optimize,
// });
// unit_tests.root_module.addImport("smithy", smithy_dep.module("smithy"));
// unit_tests.step.dependOn(gen_step);
//
// const run_unit_tests = b.addRunArtifact(unit_tests);
// run_unit_tests.skip_foreign_checks = true;
// test_step.dependOn(&run_unit_tests.step);
for (test_targets) |t| {
if (broken_windows and t.os_tag == .windows) continue;
// Creates a step for unit testing. This only builds the test executable
// but does not run it.
const unit_tests = b.addTest(.{
.root_source_file = b.path("src/aws.zig"),
.target = b.resolveTargetQuery(t),
.optimize = optimize,
});
unit_tests.root_module.addImport("smithy", smithy_module);
unit_tests.root_module.addImport("service_manifest", service_manifest_module);
unit_tests.step.dependOn(cg);
unit_tests.use_llvm = !no_llvm;
const run_unit_tests = b.addRunArtifact(unit_tests);
run_unit_tests.skip_foreign_checks = true;
test_step.dependOn(&run_unit_tests.step);
}
const check = b.step("check", "Check compilation errors");
check.dependOn(&exe.step);
// Similar to creating the run step earlier, this exposes a `test` step to
// the `zig build --help` menu, providing a way for the user to request
// running the unit tests.
const smoke_test_step = b.step("smoke-test", "Run unit tests");
// Creates a step for unit testing. This only builds the test executable
// but does not run it.
const smoke_test = b.addTest(.{
.root_source_file = b.path("src/aws.zig"),
.target = target,
.optimize = optimize,
});
smoke_test.use_llvm = !no_llvm;
smoke_test.root_module.addImport("smithy", smithy_module);
smoke_test.root_module.addImport("service_manifest", service_manifest_module);
smoke_test.step.dependOn(cg);
const run_smoke_test = b.addRunArtifact(smoke_test);
smoke_test_step.dependOn(&run_smoke_test.step);
if (no_bin) {
b.getInstallStep().dependOn(&exe.step);
} else {
b.installArtifact(exe);
}
}

24
build.zig.zon Normal file
View file

@ -0,0 +1,24 @@
.{
.name = .aws,
.version = "0.0.1",
.fingerprint = 0x1f26b7b27005bb49,
.paths = .{
"build.zig",
"build.zig.zon",
"src",
"codegen",
"README.md",
"LICENSE",
},
.dependencies = .{
.smithy = .{
.url = "https://git.lerch.org/lobo/smithy/archive/a4c6ec6dfe552c57bab601c7d99e8de02bbab1fe.tar.gz",
.hash = "smithy-1.0.0-uAyBgS_MAgC4qgc9QaEy5Y5Nf7kv32buQZBYugqNQsAn",
},
.models = .{
.url = "https://github.com/aws/aws-sdk-go-v2/archive/58cf6509525a12d64fd826da883bfdbacbd2f00e.tar.gz",
.hash = "122017a2f3081ce83c23e0c832feb1b8b4176d507b6077f522855dc774bcf83ee315",
},
},
}

View file

@ -1,28 +0,0 @@
//! Publish Date: 2022-01-12
//! This file is hosted at ??? and is meant to be copied
//! to projects that use it. Sample usage:
//!
//! const @"test" = @import("build_test.zig");
//! var test_step = try @"test".addTestStep(b, mode, exe.packages.items);
const std = @import("std");
pub fn addTestStep(b: *std.build.Builder, mode: std.builtin.Mode, packages: []std.build.Pkg) !*std.build.Step {
const test_step = b.step("test", "Run all tests");
var src_dir = try std.fs.openDirAbsolute(try std.fs.path.resolve(b.allocator, &[_][]const u8{
b.build_root,
"src",
}), .{ .iterate = true });
defer src_dir.close();
var iterator = src_dir.iterate();
while (try iterator.next()) |entry| {
if (std.mem.endsWith(u8, entry.name, ".zig")) {
const name = try std.fmt.allocPrint(b.allocator, "src/{s}", .{entry.name});
defer b.allocator.free(name);
const t = b.addTest(name);
for (packages) |package| t.addPackage(package);
t.setBuildMode(mode);
test_step.dependOn(&t.step);
}
}
return test_step;
}

View file

@ -7,19 +7,18 @@ as they do in other languages. We can combine all models from AWS into a single
comptime constant even, however, we're keeping zig files 1:1 with json files
for now.
The main executable, run with a "-s" first argument, will simply parse the
Smithy json files passed by the rest of the arguments and save each one as
its own file.json.zig. We will rely on shell commands to do the rest of the
renaming (and moving if necessary).
Optimization plan will be done by the placing of a json file in the output
directory. The json file will contain a mapping between input files and generated
outputs, as well as a top level directory hash. We can skip the output generation
entirely if the top level hash matches, otherwise, individual hashes will be
compared and output files will only regenerate if the input or output has changed.
To run this, we can use `codegen -s models/*.json`, which takes 20 seconds
or so on my i5 chromebook and probably significantly faster on a real machine.
No attempt has been made to optimize. Also, there are several bugs:
Todo
----
* I do not think all the optional types have been sorted.
* I think there is necessary metadata missing from EC2Query style services
* The output will compile and is close to what `zig fmt` likes to see, but it
has not yet been functionally tested
* It handles all the types in existing AWS services, but it does not handle
all known Smithy types (e.g. blob and document are missing)
* It would be awesome to bring over the documentation from the model into
@ -29,13 +28,7 @@ No attempt has been made to optimize. Also, there are several bugs:
realistically I'm not sure if that will matter long term, and it's a fair
amount of work as everything now can be done in a single pass without post
processing.
* This doesn't seem to build on 0.7.1 - you need master branch. I hope that
0.8.0 will be out soon. If not, a few syntax changes need to be accommodated.
Some of these will likely be addressed as I integrate the code generated files into
the SDK engine.
The models are Smithy json files, sourced from the AWS v2 go sdk
for lack of a better place. I've just downloaded the main branch and copied
the files from the tree in place.
for lack of a better place. Details are in build.zig of the parent project
that is now responsible for downloading/caching the project.

View file

@ -1,5 +1,8 @@
const std = @import("std");
// Although this function looks imperative, note that its job is to
// declaratively construct a build graph that will be executed by an external
// runner.
pub fn build(b: *std.build.Builder) !void {
// Standard target options allows the person running `zig build` to choose
// what target to build for. Here we do not override the defaults, which
@ -7,53 +10,65 @@ pub fn build(b: *std.build.Builder) !void {
// for restricting supported target set are available.
const target = b.standardTargetOptions(.{});
// Standard release options allow the person running `zig build` to select
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
const mode = b.standardReleaseOptions();
// Standard optimization options allow the person running `zig build` to select
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. Here we do not
// set a preferred release mode, allowing the user to decide how to optimize.
const optimize = b.standardOptimizeOption(.{});
const exe = b.addExecutable("codegen", "src/main.zig");
exe.addPackagePath("smithy", "../smithy/src/smithy.zig");
exe.setTarget(target);
exe.setBuildMode(mode);
// This line works as of c5d412268
// Earliest nightly is 05b5e49bc on 2021-06-12
// https://ziglang.org/builds/zig-linux-x86_64-0.9.0-dev.113+05b5e49bc.tar.xz
// exe.override_dest_dir = .{ .Custom = ".." };
exe.override_dest_dir = .{ .custom = ".." };
const exe = b.addExecutable(.{
.name = "codegen",
.root_source_file = .{ .path = "src/main.zig" },
.target = target,
.optimize = optimize,
});
// Static linkage flag was nonfunctional until 2b2efa24d0855
// Did not notice this until 2021-06-28, and that nightly is:
// https://ziglang.org/builds/zig-linux-x86_64-0.9.0-dev.321+15a030ef3.tar.xz
exe.linkage = .static;
const smithy_dep = b.dependency("smithy", .{
.target = target,
.optimize = optimize,
});
exe.addModule("smithy", smithy_dep.module("smithy"));
const is_strip = b.option(bool, "strip", "strip exe") orelse true;
exe.strip = !is_strip;
exe.install();
// This declares intent for the executable to be installed into the
// standard location when the user invokes the "install" step (the default
// step when running `zig build`).
b.installArtifact(exe);
const run_cmd = exe.run();
// This *creates* a Run step in the build graph, to be executed when another
// step is evaluated that depends on it. The next line below will establish
// such a dependency.
const run_cmd = b.addRunArtifact(exe);
// By making the run step depend on the install step, it will be run from the
// installation directory rather than directly from within the cache directory.
// This is not necessary, however, if the application depends on other installed
// files, this ensures they will be present and in the expected location.
run_cmd.step.dependOn(b.getInstallStep());
// This allows the user to pass arguments to the application in the build
// command itself, like this: `zig build run -- arg1 arg2 etc`
if (b.args) |args| {
run_cmd.addArgs(args);
}
// This creates a build step. It will be visible in the `zig build --help` menu,
// and can be selected like this: `zig build run`
// This will evaluate the `run` step rather than the default, which is "install".
const run_step = b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
const test_step = b.step("test", "Run library tests");
var build_dir = try std.fs.openDirAbsolute(b.build_root, .{});
defer build_dir.close();
var src_dir = try build_dir.openDir("src", .{ .iterate = true });
defer src_dir.close();
var iterator = src_dir.iterate();
while (try iterator.next()) |entry| {
if (std.mem.endsWith(u8, entry.name, ".zig") and
!std.mem.eql(u8, entry.name, "main.zig"))
{
const name = try std.fmt.allocPrint(b.allocator, "src/{s}", .{entry.name});
defer b.allocator.free(name);
const t = b.addTest(name);
t.setBuildMode(mode);
test_step.dependOn(&t.step);
}
}
// Creates a step for unit testing. This only builds the test executable
// but does not run it.
const unit_tests = b.addTest(.{
.root_source_file = .{ .path = "src/main.zig" },
.target = target,
.optimize = optimize,
});
const run_unit_tests = b.addRunArtifact(unit_tests);
// Similar to creating the run step earlier, this exposes a `test` step to
// the `zig build --help` menu, providing a way for the user to request
// running the unit tests.
const test_step = b.step("test", "Run unit tests");
test_step.dependOn(&run_unit_tests.step);
}

11
codegen/build.zig.zon Normal file
View file

@ -0,0 +1,11 @@
.{
.name = "aws-zig-codegen",
.version = "0.0.1",
.dependencies = .{
.smithy = .{
.url = "https://git.lerch.org/lobo/smithy/archive/41b61745d25a65817209dd5dddbb5f9b66896a99.tar.gz",
.hash = "122087deb0ae309b2258d59b40d82fe5921fdfc35b420bb59033244851f7f276fa34",
},
},
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -1,938 +0,0 @@
{
"smithy": "1.0",
"shapes": {
"com.amazonaws.amp#AccessDeniedException": {
"type": "structure",
"members": {
"message": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Description of the error.",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "User does not have sufficient access to perform this action.",
"smithy.api#error": "client",
"smithy.api#httpError": 403
}
},
"com.amazonaws.amp#AmazonPrometheusService": {
"type": "service",
"version": "2020-08-01",
"resources": [
{
"target": "com.amazonaws.amp#Workspace"
}
],
"traits": {
"aws.api#service": {
"sdkId": "amp",
"arnNamespace": "aps",
"cloudFormationName": "AmazonPrometheusService",
"cloudTrailEventSource": "CLOUDTRAIL_PLACEHOLDER_REPLACED_BY_CDK"
},
"aws.auth#sigv4": {
"name": "aps"
},
"aws.protocols#restJson1": {},
"smithy.api#cors": {
"additionalAllowedHeaders": [
"Authorization",
"x-amz-content-sha256",
"X-Amz-Date",
"x-amzn-trace-id",
"X-Amz-Security-Token",
"x-amz-user-agent",
"*",
"content-type",
"x-amzn-platform-id",
"X-Amz-Target",
"Date"
],
"additionalExposedHeaders": [
"date",
"x-amz-apigw-id",
"x-amzn-trace-id",
"x-amzn-errortype",
"x-amzn-requestid",
"x-amzn-errormessage"
]
},
"smithy.api#documentation": "Amazon Managed Service for Prometheus",
"smithy.api#title": "Amazon Prometheus Service"
}
},
"com.amazonaws.amp#ConflictException": {
"type": "structure",
"members": {
"message": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Description of the error.",
"smithy.api#required": {}
}
},
"resourceId": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Identifier of the resource affected.",
"smithy.api#required": {}
}
},
"resourceType": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Type of the resource affected.",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "Updating or deleting a resource can cause an inconsistent state.",
"smithy.api#error": "client",
"smithy.api#httpError": 409
}
},
"com.amazonaws.amp#CreateWorkspace": {
"type": "operation",
"input": {
"target": "com.amazonaws.amp#CreateWorkspaceRequest"
},
"output": {
"target": "com.amazonaws.amp#CreateWorkspaceResponse"
},
"errors": [
{
"target": "com.amazonaws.amp#AccessDeniedException"
},
{
"target": "com.amazonaws.amp#ConflictException"
},
{
"target": "com.amazonaws.amp#InternalServerException"
},
{
"target": "com.amazonaws.amp#ServiceQuotaExceededException"
},
{
"target": "com.amazonaws.amp#ThrottlingException"
},
{
"target": "com.amazonaws.amp#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "Creates a new AMP workspace.",
"smithy.api#http": {
"method": "POST",
"uri": "/workspaces",
"code": 202
},
"smithy.api#idempotent": {}
}
},
"com.amazonaws.amp#CreateWorkspaceRequest": {
"type": "structure",
"members": {
"alias": {
"target": "com.amazonaws.amp#WorkspaceAlias",
"traits": {
"smithy.api#documentation": "An optional user-assigned alias for this workspace. This alias is for user reference and does not need to be unique."
}
},
"clientToken": {
"target": "com.amazonaws.amp#IdempotencyToken",
"traits": {
"smithy.api#documentation": "Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.",
"smithy.api#idempotencyToken": {}
}
}
},
"traits": {
"smithy.api#documentation": "Represents the input of a CreateWorkspace operation."
}
},
"com.amazonaws.amp#CreateWorkspaceResponse": {
"type": "structure",
"members": {
"workspaceId": {
"target": "com.amazonaws.amp#WorkspaceId",
"traits": {
"smithy.api#documentation": "The generated ID of the workspace that was just created.",
"smithy.api#required": {}
}
},
"arn": {
"target": "com.amazonaws.amp#WorkspaceArn",
"traits": {
"smithy.api#documentation": "The ARN of the workspace that was just created.",
"smithy.api#required": {}
}
},
"status": {
"target": "com.amazonaws.amp#WorkspaceStatus",
"traits": {
"smithy.api#documentation": "The status of the workspace that was just created (usually CREATING).",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "Represents the output of a CreateWorkspace operation."
}
},
"com.amazonaws.amp#DeleteWorkspace": {
"type": "operation",
"input": {
"target": "com.amazonaws.amp#DeleteWorkspaceRequest"
},
"errors": [
{
"target": "com.amazonaws.amp#AccessDeniedException"
},
{
"target": "com.amazonaws.amp#InternalServerException"
},
{
"target": "com.amazonaws.amp#ResourceNotFoundException"
},
{
"target": "com.amazonaws.amp#ThrottlingException"
},
{
"target": "com.amazonaws.amp#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "Deletes an AMP workspace.",
"smithy.api#http": {
"method": "DELETE",
"uri": "/workspaces/{workspaceId}",
"code": 202
},
"smithy.api#idempotent": {}
}
},
"com.amazonaws.amp#DeleteWorkspaceRequest": {
"type": "structure",
"members": {
"workspaceId": {
"target": "com.amazonaws.amp#WorkspaceId",
"traits": {
"smithy.api#documentation": "The ID of the workspace to delete.",
"smithy.api#httpLabel": {},
"smithy.api#required": {}
}
},
"clientToken": {
"target": "com.amazonaws.amp#IdempotencyToken",
"traits": {
"smithy.api#documentation": "Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.",
"smithy.api#httpQuery": "clientToken",
"smithy.api#idempotencyToken": {}
}
}
},
"traits": {
"smithy.api#documentation": "Represents the input of a DeleteWorkspace operation."
}
},
"com.amazonaws.amp#DescribeWorkspace": {
"type": "operation",
"input": {
"target": "com.amazonaws.amp#DescribeWorkspaceRequest"
},
"output": {
"target": "com.amazonaws.amp#DescribeWorkspaceResponse"
},
"errors": [
{
"target": "com.amazonaws.amp#AccessDeniedException"
},
{
"target": "com.amazonaws.amp#InternalServerException"
},
{
"target": "com.amazonaws.amp#ResourceNotFoundException"
},
{
"target": "com.amazonaws.amp#ThrottlingException"
},
{
"target": "com.amazonaws.amp#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "Describes an existing AMP workspace.",
"smithy.api#http": {
"method": "GET",
"uri": "/workspaces/{workspaceId}",
"code": 200
},
"smithy.api#readonly": {}
}
},
"com.amazonaws.amp#DescribeWorkspaceRequest": {
"type": "structure",
"members": {
"workspaceId": {
"target": "com.amazonaws.amp#WorkspaceId",
"traits": {
"smithy.api#documentation": "The ID of the workspace to describe.",
"smithy.api#httpLabel": {},
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "Represents the input of a DescribeWorkspace operation."
}
},
"com.amazonaws.amp#DescribeWorkspaceResponse": {
"type": "structure",
"members": {
"workspace": {
"target": "com.amazonaws.amp#WorkspaceDescription",
"traits": {
"smithy.api#documentation": "The properties of the selected workspace.",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "Represents the output of a DescribeWorkspace operation."
}
},
"com.amazonaws.amp#IdempotencyToken": {
"type": "string",
"traits": {
"smithy.api#documentation": "An identifier used to ensure the idempotency of a write request.",
"smithy.api#length": {
"min": 1,
"max": 64
},
"smithy.api#pattern": "[!-~]+"
}
},
"com.amazonaws.amp#InternalServerException": {
"type": "structure",
"members": {
"message": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Description of the error.",
"smithy.api#required": {}
}
},
"retryAfterSeconds": {
"target": "smithy.api#Integer",
"traits": {
"smithy.api#documentation": "Advice to clients on when the call can be safely retried.",
"smithy.api#httpHeader": "Retry-After"
}
}
},
"traits": {
"smithy.api#documentation": "Unexpected error during processing of request.",
"smithy.api#error": "server",
"smithy.api#httpError": 500,
"smithy.api#retryable": {}
}
},
"com.amazonaws.amp#ListWorkspaces": {
"type": "operation",
"input": {
"target": "com.amazonaws.amp#ListWorkspacesRequest"
},
"output": {
"target": "com.amazonaws.amp#ListWorkspacesResponse"
},
"errors": [
{
"target": "com.amazonaws.amp#AccessDeniedException"
},
{
"target": "com.amazonaws.amp#InternalServerException"
},
{
"target": "com.amazonaws.amp#ThrottlingException"
},
{
"target": "com.amazonaws.amp#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "Lists all AMP workspaces, including workspaces being created or deleted.",
"smithy.api#http": {
"method": "GET",
"uri": "/workspaces",
"code": 200
},
"smithy.api#paginated": {
"inputToken": "nextToken",
"outputToken": "nextToken",
"items": "workspaces",
"pageSize": "maxResults"
},
"smithy.api#readonly": {}
}
},
"com.amazonaws.amp#ListWorkspacesRequest": {
"type": "structure",
"members": {
"nextToken": {
"target": "com.amazonaws.amp#PaginationToken",
"traits": {
"smithy.api#documentation": "Pagination token to request the next page in a paginated list. This token is obtained from the output of the previous ListWorkspaces request.",
"smithy.api#httpQuery": "nextToken"
}
},
"alias": {
"target": "com.amazonaws.amp#WorkspaceAlias",
"traits": {
"smithy.api#documentation": "Optional filter for workspace alias. Only the workspaces with aliases that begin with this value will be returned.",
"smithy.api#httpQuery": "alias"
}
},
"maxResults": {
"target": "smithy.api#Integer",
"traits": {
"smithy.api#documentation": "Maximum results to return in response (default=100, maximum=1000).",
"smithy.api#httpQuery": "maxResults",
"smithy.api#range": {
"min": 1,
"max": 1000
}
}
}
},
"traits": {
"smithy.api#documentation": "Represents the input of a ListWorkspaces operation."
}
},
"com.amazonaws.amp#ListWorkspacesResponse": {
"type": "structure",
"members": {
"workspaces": {
"target": "com.amazonaws.amp#WorkspaceSummaryList",
"traits": {
"smithy.api#documentation": "The list of existing workspaces, including those undergoing creation or deletion.",
"smithy.api#required": {}
}
},
"nextToken": {
"target": "com.amazonaws.amp#PaginationToken",
"traits": {
"smithy.api#documentation": "Pagination token to use when requesting the next page in this list."
}
}
},
"traits": {
"smithy.api#documentation": "Represents the output of a ListWorkspaces operation."
}
},
"com.amazonaws.amp#PaginationToken": {
"type": "string",
"traits": {
"smithy.api#documentation": "A token used to access the next page in a paginated result set."
}
},
"com.amazonaws.amp#ResourceNotFoundException": {
"type": "structure",
"members": {
"message": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Description of the error.",
"smithy.api#required": {}
}
},
"resourceId": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Identifier of the resource affected.",
"smithy.api#required": {}
}
},
"resourceType": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Type of the resource affected.",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "Request references a resource which does not exist.",
"smithy.api#error": "client",
"smithy.api#httpError": 404
}
},
"com.amazonaws.amp#ServiceQuotaExceededException": {
"type": "structure",
"members": {
"message": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Description of the error.",
"smithy.api#required": {}
}
},
"resourceId": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Identifier of the resource affected.",
"smithy.api#required": {}
}
},
"resourceType": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Type of the resource affected.",
"smithy.api#required": {}
}
},
"serviceCode": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Service Quotas requirement to identify originating service.",
"smithy.api#required": {}
}
},
"quotaCode": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Service Quotas requirement to identify originating quota.",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "Request would cause a service quota to be exceeded.",
"smithy.api#error": "client",
"smithy.api#httpError": 402
}
},
"com.amazonaws.amp#ThrottlingException": {
"type": "structure",
"members": {
"message": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Description of the error.",
"smithy.api#required": {}
}
},
"serviceCode": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Service Quotas requirement to identify originating service."
}
},
"quotaCode": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Service Quotas requirement to identify originating quota."
}
},
"retryAfterSeconds": {
"target": "smithy.api#Integer",
"traits": {
"smithy.api#documentation": "Advice to clients on when the call can be safely retried.",
"smithy.api#httpHeader": "Retry-After"
}
}
},
"traits": {
"smithy.api#documentation": "Request was denied due to request throttling.",
"smithy.api#error": "client",
"smithy.api#httpError": 429,
"smithy.api#retryable": {}
}
},
"com.amazonaws.amp#UpdateWorkspaceAlias": {
"type": "operation",
"input": {
"target": "com.amazonaws.amp#UpdateWorkspaceAliasRequest"
},
"errors": [
{
"target": "com.amazonaws.amp#AccessDeniedException"
},
{
"target": "com.amazonaws.amp#ConflictException"
},
{
"target": "com.amazonaws.amp#InternalServerException"
},
{
"target": "com.amazonaws.amp#ResourceNotFoundException"
},
{
"target": "com.amazonaws.amp#ServiceQuotaExceededException"
},
{
"target": "com.amazonaws.amp#ThrottlingException"
},
{
"target": "com.amazonaws.amp#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "Updates an AMP workspace alias.",
"smithy.api#http": {
"method": "POST",
"uri": "/workspaces/{workspaceId}/alias",
"code": 204
},
"smithy.api#idempotent": {}
}
},
"com.amazonaws.amp#UpdateWorkspaceAliasRequest": {
"type": "structure",
"members": {
"workspaceId": {
"target": "com.amazonaws.amp#WorkspaceId",
"traits": {
"smithy.api#documentation": "The ID of the workspace being updated.",
"smithy.api#httpLabel": {},
"smithy.api#required": {}
}
},
"alias": {
"target": "com.amazonaws.amp#WorkspaceAlias",
"traits": {
"smithy.api#documentation": "The new alias of the workspace."
}
},
"clientToken": {
"target": "com.amazonaws.amp#IdempotencyToken",
"traits": {
"smithy.api#documentation": "Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.",
"smithy.api#idempotencyToken": {}
}
}
},
"traits": {
"smithy.api#documentation": "Represents the input of an UpdateWorkspaceAlias operation."
}
},
"com.amazonaws.amp#Uri": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 1024
}
}
},
"com.amazonaws.amp#ValidationException": {
"type": "structure",
"members": {
"message": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Description of the error.",
"smithy.api#required": {}
}
},
"reason": {
"target": "com.amazonaws.amp#ValidationExceptionReason",
"traits": {
"smithy.api#documentation": "Reason the request failed validation.",
"smithy.api#required": {}
}
},
"fieldList": {
"target": "com.amazonaws.amp#ValidationExceptionFieldList",
"traits": {
"smithy.api#documentation": "The field that caused the error, if applicable. If more than one field caused the error, pick one and elaborate in the message."
}
}
},
"traits": {
"smithy.api#documentation": "The input fails to satisfy the constraints specified by an AWS service.",
"smithy.api#error": "client",
"smithy.api#httpError": 400
}
},
"com.amazonaws.amp#ValidationExceptionField": {
"type": "structure",
"members": {
"name": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "The field name.",
"smithy.api#required": {}
}
},
"message": {
"target": "smithy.api#String",
"traits": {
"smithy.api#documentation": "Message describing why the field failed validation.",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "Stores information about a field passed inside a request that resulted in an exception."
}
},
"com.amazonaws.amp#ValidationExceptionFieldList": {
"type": "list",
"member": {
"target": "com.amazonaws.amp#ValidationExceptionField"
},
"traits": {
"smithy.api#documentation": "A list of fields."
}
},
"com.amazonaws.amp#ValidationExceptionReason": {
"type": "string",
"traits": {
"smithy.api#documentation": "Possible reasons a request failed validation.",
"smithy.api#enum": [
{
"value": "UNKNOWN_OPERATION",
"name": "UNKNOWN_OPERATION"
},
{
"value": "CANNOT_PARSE",
"name": "CANNOT_PARSE"
},
{
"value": "FIELD_VALIDATION_FAILED",
"name": "FIELD_VALIDATION_FAILED"
},
{
"value": "OTHER",
"name": "OTHER"
}
]
}
},
"com.amazonaws.amp#Workspace": {
"type": "resource",
"identifiers": {
"workspaceId": {
"target": "com.amazonaws.amp#WorkspaceId"
}
},
"create": {
"target": "com.amazonaws.amp#CreateWorkspace"
},
"read": {
"target": "com.amazonaws.amp#DescribeWorkspace"
},
"update": {
"target": "com.amazonaws.amp#UpdateWorkspaceAlias"
},
"delete": {
"target": "com.amazonaws.amp#DeleteWorkspace"
},
"list": {
"target": "com.amazonaws.amp#ListWorkspaces"
},
"traits": {
"aws.api#arn": {
"template": "workspace/{workspaceId}",
"absolute": false,
"noAccount": false,
"noRegion": false
},
"smithy.api#documentation": "An AMP workspace is a logical and isolated Prometheus server dedicated to Prometheus resources such as metrics, where you ingest, store, and query your Prometheus metrics."
}
},
"com.amazonaws.amp#WorkspaceAlias": {
"type": "string",
"traits": {
"smithy.api#documentation": "A user-assigned workspace alias.",
"smithy.api#length": {
"min": 1,
"max": 100
}
}
},
"com.amazonaws.amp#WorkspaceArn": {
"type": "string",
"traits": {
"aws.api#arnReference": {
"type": "AWS::APS::Workspace",
"service": "com.amazonaws.services.awsprometheus.serviceapi#ManagedPrometheusCP",
"resource": "com.amazonaws.amp#Workspace"
},
"smithy.api#documentation": "An ARN identifying a Workspace."
}
},
"com.amazonaws.amp#WorkspaceDescription": {
"type": "structure",
"members": {
"workspaceId": {
"target": "com.amazonaws.amp#WorkspaceId",
"traits": {
"smithy.api#documentation": "Unique string identifying this workspace.",
"smithy.api#required": {}
}
},
"alias": {
"target": "com.amazonaws.amp#WorkspaceAlias",
"traits": {
"smithy.api#documentation": "Alias of this workspace."
}
},
"arn": {
"target": "com.amazonaws.amp#WorkspaceArn",
"traits": {
"smithy.api#documentation": "The Amazon Resource Name (ARN) of this workspace.",
"smithy.api#required": {}
}
},
"status": {
"target": "com.amazonaws.amp#WorkspaceStatus",
"traits": {
"smithy.api#documentation": "The status of this workspace.",
"smithy.api#required": {}
}
},
"prometheusEndpoint": {
"target": "com.amazonaws.amp#Uri",
"traits": {
"smithy.api#documentation": "Prometheus endpoint URI."
}
},
"createdAt": {
"target": "smithy.api#Timestamp",
"traits": {
"smithy.api#documentation": "The time when the workspace was created.",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "Represents the properties of a workspace.",
"smithy.api#references": [
{
"resource": "com.amazonaws.amp#Workspace"
}
]
}
},
"com.amazonaws.amp#WorkspaceId": {
"type": "string",
"traits": {
"smithy.api#documentation": "A workspace ID.",
"smithy.api#length": {
"min": 1,
"max": 64
},
"smithy.api#pattern": "[0-9A-Za-z][-.0-9A-Z_a-z]*"
}
},
"com.amazonaws.amp#WorkspaceStatus": {
"type": "structure",
"members": {
"statusCode": {
"target": "com.amazonaws.amp#WorkspaceStatusCode",
"traits": {
"smithy.api#documentation": "Status code of this workspace.",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "Represents the status of a workspace."
}
},
"com.amazonaws.amp#WorkspaceStatusCode": {
"type": "string",
"traits": {
"smithy.api#documentation": "State of a workspace.",
"smithy.api#enum": [
{
"value": "CREATING",
"name": "CREATING",
"documentation": "Workspace is being created. Deletion is disallowed until status is ACTIVE."
},
{
"value": "ACTIVE",
"name": "ACTIVE",
"documentation": "Workspace has been created and is usable."
},
{
"value": "UPDATING",
"name": "UPDATING",
"documentation": "Workspace is being updated. Updates are allowed only when status is ACTIVE."
},
{
"value": "DELETING",
"name": "DELETING",
"documentation": "Workspace is being deleted. Deletions are allowed only when status is ACTIVE."
},
{
"value": "CREATION_FAILED",
"name": "CREATION_FAILED",
"documentation": "Workspace creation failed. Refer to WorkspaceStatus.failureReason for more details."
}
]
}
},
"com.amazonaws.amp#WorkspaceSummary": {
"type": "structure",
"members": {
"workspaceId": {
"target": "com.amazonaws.amp#WorkspaceId",
"traits": {
"smithy.api#documentation": "Unique string identifying this workspace.",
"smithy.api#required": {}
}
},
"alias": {
"target": "com.amazonaws.amp#WorkspaceAlias",
"traits": {
"smithy.api#documentation": "Alias of this workspace."
}
},
"arn": {
"target": "com.amazonaws.amp#WorkspaceArn",
"traits": {
"smithy.api#documentation": "The AmazonResourceName of this workspace.",
"smithy.api#required": {}
}
},
"status": {
"target": "com.amazonaws.amp#WorkspaceStatus",
"traits": {
"smithy.api#documentation": "The status of this workspace.",
"smithy.api#required": {}
}
},
"createdAt": {
"target": "smithy.api#Timestamp",
"traits": {
"smithy.api#documentation": "The time when the workspace was created.",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "Represents a summary of the properties of a workspace.",
"smithy.api#references": [
{
"resource": "com.amazonaws.amp#Workspace"
}
]
}
},
"com.amazonaws.amp#WorkspaceSummaryList": {
"type": "list",
"member": {
"target": "com.amazonaws.amp#WorkspaceSummary"
},
"traits": {
"smithy.api#documentation": "A list of workspace summaries."
}
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1,297 +0,0 @@
{
"smithy": "1.0",
"metadata": {
"suppressions": [
{
"id": "HttpMethodSemantics",
"namespace": "*"
},
{
"id": "HttpResponseCodeSemantics",
"namespace": "*"
},
{
"id": "PaginatedTrait",
"namespace": "*"
},
{
"id": "HttpHeaderTrait",
"namespace": "*"
},
{
"id": "HttpUriConflict",
"namespace": "*"
},
{
"id": "Service",
"namespace": "*"
}
]
},
"shapes": {
"com.amazonaws.apigatewaymanagementapi#ApiGatewayManagementApi": {
"type": "service",
"version": "2018-11-29",
"operations": [
{
"target": "com.amazonaws.apigatewaymanagementapi#DeleteConnection"
},
{
"target": "com.amazonaws.apigatewaymanagementapi#GetConnection"
},
{
"target": "com.amazonaws.apigatewaymanagementapi#PostToConnection"
}
],
"traits": {
"aws.api#service": {
"sdkId": "ApiGatewayManagementApi",
"arnNamespace": "apigateway",
"cloudFormationName": "ApiGatewayManagementApi",
"cloudTrailEventSource": "apigatewaymanagementapi.amazonaws.com",
"endpointPrefix": "execute-api"
},
"aws.auth#sigv4": {
"name": "execute-api"
},
"aws.protocols#restJson1": {},
"smithy.api#documentation": "<p>The Amazon API Gateway Management API allows you to directly manage runtime aspects of your deployed APIs. To use it, you must explicitly set the SDK's endpoint to point to the endpoint of your deployed API. The endpoint will be of the form https://{api-id}.execute-api.{region}.amazonaws.com/{stage}, or will be the endpoint corresponding to your API's custom domain and base path, if applicable.</p>",
"smithy.api#title": "AmazonApiGatewayManagementApi"
}
},
"com.amazonaws.apigatewaymanagementapi#Data": {
"type": "blob",
"traits": {
"smithy.api#documentation": "<p>The data to be sent to the client specified by its connection id.</p>",
"smithy.api#length": {
"min": 0,
"max": 131072
}
}
},
"com.amazonaws.apigatewaymanagementapi#DeleteConnection": {
"type": "operation",
"input": {
"target": "com.amazonaws.apigatewaymanagementapi#DeleteConnectionRequest"
},
"errors": [
{
"target": "com.amazonaws.apigatewaymanagementapi#ForbiddenException"
},
{
"target": "com.amazonaws.apigatewaymanagementapi#GoneException"
},
{
"target": "com.amazonaws.apigatewaymanagementapi#LimitExceededException"
}
],
"traits": {
"smithy.api#documentation": "<p>Delete the connection with the provided id.</p>",
"smithy.api#http": {
"method": "DELETE",
"uri": "/@connections/{ConnectionId}",
"code": 204
}
}
},
"com.amazonaws.apigatewaymanagementapi#DeleteConnectionRequest": {
"type": "structure",
"members": {
"ConnectionId": {
"target": "com.amazonaws.apigatewaymanagementapi#__string",
"traits": {
"smithy.api#httpLabel": {},
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.apigatewaymanagementapi#ForbiddenException": {
"type": "structure",
"members": {},
"traits": {
"smithy.api#documentation": "<p>The caller is not authorized to invoke this operation.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 403
}
},
"com.amazonaws.apigatewaymanagementapi#GetConnection": {
"type": "operation",
"input": {
"target": "com.amazonaws.apigatewaymanagementapi#GetConnectionRequest"
},
"output": {
"target": "com.amazonaws.apigatewaymanagementapi#GetConnectionResponse"
},
"errors": [
{
"target": "com.amazonaws.apigatewaymanagementapi#ForbiddenException"
},
{
"target": "com.amazonaws.apigatewaymanagementapi#GoneException"
},
{
"target": "com.amazonaws.apigatewaymanagementapi#LimitExceededException"
}
],
"traits": {
"smithy.api#documentation": "<p>Get information about the connection with the provided id.</p>",
"smithy.api#http": {
"method": "GET",
"uri": "/@connections/{ConnectionId}",
"code": 200
}
}
},
"com.amazonaws.apigatewaymanagementapi#GetConnectionRequest": {
"type": "structure",
"members": {
"ConnectionId": {
"target": "com.amazonaws.apigatewaymanagementapi#__string",
"traits": {
"smithy.api#httpLabel": {},
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.apigatewaymanagementapi#GetConnectionResponse": {
"type": "structure",
"members": {
"ConnectedAt": {
"target": "com.amazonaws.apigatewaymanagementapi#__timestampIso8601",
"traits": {
"smithy.api#documentation": "<p>The time in ISO 8601 format for when the connection was established.</p>",
"smithy.api#jsonName": "connectedAt"
}
},
"Identity": {
"target": "com.amazonaws.apigatewaymanagementapi#Identity",
"traits": {
"smithy.api#jsonName": "identity"
}
},
"LastActiveAt": {
"target": "com.amazonaws.apigatewaymanagementapi#__timestampIso8601",
"traits": {
"smithy.api#documentation": "<p>The time in ISO 8601 format for when the connection was last active.</p>",
"smithy.api#jsonName": "lastActiveAt"
}
}
}
},
"com.amazonaws.apigatewaymanagementapi#GoneException": {
"type": "structure",
"members": {},
"traits": {
"smithy.api#documentation": "<p>The connection with the provided id no longer exists.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 410
}
},
"com.amazonaws.apigatewaymanagementapi#Identity": {
"type": "structure",
"members": {
"SourceIp": {
"target": "com.amazonaws.apigatewaymanagementapi#__string",
"traits": {
"smithy.api#documentation": "<p>The source IP address of the TCP connection making the request to API Gateway.</p>",
"smithy.api#jsonName": "sourceIp",
"smithy.api#required": {}
}
},
"UserAgent": {
"target": "com.amazonaws.apigatewaymanagementapi#__string",
"traits": {
"smithy.api#documentation": "<p>The User Agent of the API caller.</p>",
"smithy.api#jsonName": "userAgent",
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.apigatewaymanagementapi#LimitExceededException": {
"type": "structure",
"members": {},
"traits": {
"smithy.api#documentation": "<p>The client is sending more than the allowed number of requests per unit of time or the WebSocket client side buffer is full.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 429
}
},
"com.amazonaws.apigatewaymanagementapi#PayloadTooLargeException": {
"type": "structure",
"members": {
"Message": {
"target": "com.amazonaws.apigatewaymanagementapi#__string",
"traits": {
"smithy.api#jsonName": "message"
}
}
},
"traits": {
"smithy.api#documentation": "<p>The data has exceeded the maximum size allowed.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 413
}
},
"com.amazonaws.apigatewaymanagementapi#PostToConnection": {
"type": "operation",
"input": {
"target": "com.amazonaws.apigatewaymanagementapi#PostToConnectionRequest"
},
"errors": [
{
"target": "com.amazonaws.apigatewaymanagementapi#ForbiddenException"
},
{
"target": "com.amazonaws.apigatewaymanagementapi#GoneException"
},
{
"target": "com.amazonaws.apigatewaymanagementapi#LimitExceededException"
},
{
"target": "com.amazonaws.apigatewaymanagementapi#PayloadTooLargeException"
}
],
"traits": {
"smithy.api#documentation": "<p>Sends the provided data to the specified connection.</p>",
"smithy.api#http": {
"method": "POST",
"uri": "/@connections/{ConnectionId}",
"code": 200
}
}
},
"com.amazonaws.apigatewaymanagementapi#PostToConnectionRequest": {
"type": "structure",
"members": {
"Data": {
"target": "com.amazonaws.apigatewaymanagementapi#Data",
"traits": {
"smithy.api#documentation": "<p>The data to be sent to the client specified by its connection id.</p>",
"smithy.api#httpPayload": {},
"smithy.api#required": {}
}
},
"ConnectionId": {
"target": "com.amazonaws.apigatewaymanagementapi#__string",
"traits": {
"smithy.api#documentation": "<p>The identifier of the connection that a specific client is using.</p>",
"smithy.api#httpLabel": {},
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.apigatewaymanagementapi#__string": {
"type": "string"
},
"com.amazonaws.apigatewaymanagementapi#__timestampIso8601": {
"type": "timestamp",
"traits": {
"smithy.api#timestampFormat": "date-time"
}
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,834 +0,0 @@
{
"smithy": "1.0",
"metadata": {
"suppressions": [
{
"id": "HttpMethodSemantics",
"namespace": "*"
},
{
"id": "HttpResponseCodeSemantics",
"namespace": "*"
},
{
"id": "PaginatedTrait",
"namespace": "*"
},
{
"id": "HttpHeaderTrait",
"namespace": "*"
},
{
"id": "HttpUriConflict",
"namespace": "*"
},
{
"id": "Service",
"namespace": "*"
}
]
},
"shapes": {
"com.amazonaws.applicationcostprofiler#AWSApplicationCostProfiler": {
"type": "service",
"version": "2020-09-10",
"operations": [
{
"target": "com.amazonaws.applicationcostprofiler#DeleteReportDefinition"
},
{
"target": "com.amazonaws.applicationcostprofiler#GetReportDefinition"
},
{
"target": "com.amazonaws.applicationcostprofiler#ImportApplicationUsage"
},
{
"target": "com.amazonaws.applicationcostprofiler#ListReportDefinitions"
},
{
"target": "com.amazonaws.applicationcostprofiler#PutReportDefinition"
},
{
"target": "com.amazonaws.applicationcostprofiler#UpdateReportDefinition"
}
],
"traits": {
"aws.api#service": {
"sdkId": "ApplicationCostProfiler",
"arnNamespace": "application-cost-profiler",
"cloudFormationName": "ApplicationCostProfiler",
"cloudTrailEventSource": "applicationcostprofiler.amazonaws.com",
"endpointPrefix": "application-cost-profiler"
},
"aws.auth#sigv4": {
"name": "application-cost-profiler"
},
"aws.protocols#restJson1": {},
"smithy.api#documentation": "<p>This reference provides descriptions of the AWS Application Cost Profiler API.</p>\n <p>The AWS Application Cost Profiler API provides programmatic access to view, create, update, and delete\n application cost report definitions, as well as to import your usage data into the Application Cost Profiler\n service.</p>\n <p>For more information about using this service, see the <a href=\"https://docs.aws.amazon.com/application-cost-profiler/latest/userguide/introduction.html\">AWS Application Cost\n Profiler User Guide</a>.</p>",
"smithy.api#title": "AWS Application Cost Profiler"
}
},
"com.amazonaws.applicationcostprofiler#AccessDeniedException": {
"type": "structure",
"members": {
"message": {
"target": "com.amazonaws.applicationcostprofiler#ErrorMessage"
}
},
"traits": {
"smithy.api#documentation": "<p>You do not have permission to perform this action.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 403
}
},
"com.amazonaws.applicationcostprofiler#DeleteReportDefinition": {
"type": "operation",
"input": {
"target": "com.amazonaws.applicationcostprofiler#DeleteReportDefinitionRequest"
},
"output": {
"target": "com.amazonaws.applicationcostprofiler#DeleteReportDefinitionResult"
},
"errors": [
{
"target": "com.amazonaws.applicationcostprofiler#AccessDeniedException"
},
{
"target": "com.amazonaws.applicationcostprofiler#InternalServerException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ThrottlingException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "<p>Deletes the specified report definition in AWS Application Cost Profiler. This stops the report from being\n generated.</p>",
"smithy.api#http": {
"method": "DELETE",
"uri": "/reportDefinition/{reportId}",
"code": 200
}
}
},
"com.amazonaws.applicationcostprofiler#DeleteReportDefinitionRequest": {
"type": "structure",
"members": {
"reportId": {
"target": "com.amazonaws.applicationcostprofiler#ReportId",
"traits": {
"smithy.api#documentation": "<p>Required. ID of the report to delete.</p>",
"smithy.api#httpLabel": {},
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.applicationcostprofiler#DeleteReportDefinitionResult": {
"type": "structure",
"members": {
"reportId": {
"target": "com.amazonaws.applicationcostprofiler#ReportId",
"traits": {
"smithy.api#documentation": "<p>ID of the report that was deleted.</p>"
}
}
}
},
"com.amazonaws.applicationcostprofiler#ErrorMessage": {
"type": "string"
},
"com.amazonaws.applicationcostprofiler#Format": {
"type": "string",
"traits": {
"smithy.api#enum": [
{
"value": "CSV",
"name": "CSV"
},
{
"value": "PARQUET",
"name": "PARQUET"
}
]
}
},
"com.amazonaws.applicationcostprofiler#GetReportDefinition": {
"type": "operation",
"input": {
"target": "com.amazonaws.applicationcostprofiler#GetReportDefinitionRequest"
},
"output": {
"target": "com.amazonaws.applicationcostprofiler#GetReportDefinitionResult"
},
"errors": [
{
"target": "com.amazonaws.applicationcostprofiler#AccessDeniedException"
},
{
"target": "com.amazonaws.applicationcostprofiler#InternalServerException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ThrottlingException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "<p>Retrieves the definition of a report already configured in AWS Application Cost Profiler.</p>",
"smithy.api#http": {
"method": "GET",
"uri": "/reportDefinition/{reportId}",
"code": 200
}
}
},
"com.amazonaws.applicationcostprofiler#GetReportDefinitionRequest": {
"type": "structure",
"members": {
"reportId": {
"target": "com.amazonaws.applicationcostprofiler#ReportId",
"traits": {
"smithy.api#documentation": "<p>ID of the report to retrieve.</p>",
"smithy.api#httpLabel": {},
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.applicationcostprofiler#GetReportDefinitionResult": {
"type": "structure",
"members": {
"reportId": {
"target": "com.amazonaws.applicationcostprofiler#ReportId",
"traits": {
"smithy.api#documentation": "<p>ID of the report retrieved.</p>",
"smithy.api#required": {}
}
},
"reportDescription": {
"target": "com.amazonaws.applicationcostprofiler#ReportDescription",
"traits": {
"smithy.api#documentation": "<p>Description of the report.</p>",
"smithy.api#required": {}
}
},
"reportFrequency": {
"target": "com.amazonaws.applicationcostprofiler#ReportFrequency",
"traits": {
"smithy.api#documentation": "<p>Cadence used to generate the report.</p>",
"smithy.api#required": {}
}
},
"format": {
"target": "com.amazonaws.applicationcostprofiler#Format",
"traits": {
"smithy.api#documentation": "<p>Format of the generated report.</p>",
"smithy.api#required": {}
}
},
"destinationS3Location": {
"target": "com.amazonaws.applicationcostprofiler#S3Location",
"traits": {
"smithy.api#documentation": "<p>Amazon Simple Storage Service (Amazon S3) location where the report is uploaded.</p>",
"smithy.api#required": {}
}
},
"createdAt": {
"target": "com.amazonaws.applicationcostprofiler#Timestamp",
"traits": {
"smithy.api#documentation": "<p>Timestamp (milliseconds) when this report definition was created.</p>",
"smithy.api#required": {}
}
},
"lastUpdated": {
"target": "com.amazonaws.applicationcostprofiler#Timestamp",
"traits": {
"smithy.api#documentation": "<p>Timestamp (milliseconds) when this report definition was last updated.</p>",
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.applicationcostprofiler#ImportApplicationUsage": {
"type": "operation",
"input": {
"target": "com.amazonaws.applicationcostprofiler#ImportApplicationUsageRequest"
},
"output": {
"target": "com.amazonaws.applicationcostprofiler#ImportApplicationUsageResult"
},
"errors": [
{
"target": "com.amazonaws.applicationcostprofiler#AccessDeniedException"
},
{
"target": "com.amazonaws.applicationcostprofiler#InternalServerException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ThrottlingException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "<p>Ingests application usage data from Amazon Simple Storage Service (Amazon S3).</p>\n <p>The data must already exist in the S3 location. As part of the action, AWS Application Cost Profiler\n copies the object from your S3 bucket to an S3 bucket owned by Amazon for processing\n asynchronously.</p>",
"smithy.api#http": {
"method": "POST",
"uri": "/importApplicationUsage",
"code": 200
}
}
},
"com.amazonaws.applicationcostprofiler#ImportApplicationUsageRequest": {
"type": "structure",
"members": {
"sourceS3Location": {
"target": "com.amazonaws.applicationcostprofiler#SourceS3Location",
"traits": {
"smithy.api#documentation": "<p>Amazon S3 location to import application usage data from.</p>",
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.applicationcostprofiler#ImportApplicationUsageResult": {
"type": "structure",
"members": {
"importId": {
"target": "com.amazonaws.applicationcostprofiler#ImportId",
"traits": {
"smithy.api#documentation": "<p>ID of the import request.</p>",
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.applicationcostprofiler#ImportId": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 255
},
"smithy.api#pattern": "[0-9A-Za-z\\.\\-_]*"
}
},
"com.amazonaws.applicationcostprofiler#Integer": {
"type": "integer",
"traits": {
"smithy.api#box": {},
"smithy.api#range": {
"min": 1,
"max": 100
}
}
},
"com.amazonaws.applicationcostprofiler#InternalServerException": {
"type": "structure",
"members": {
"message": {
"target": "com.amazonaws.applicationcostprofiler#ErrorMessage"
}
},
"traits": {
"smithy.api#documentation": "<p>An internal server error occurred. Retry your request.</p>",
"smithy.api#error": "server",
"smithy.api#httpError": 500
}
},
"com.amazonaws.applicationcostprofiler#ListReportDefinitions": {
"type": "operation",
"input": {
"target": "com.amazonaws.applicationcostprofiler#ListReportDefinitionsRequest"
},
"output": {
"target": "com.amazonaws.applicationcostprofiler#ListReportDefinitionsResult"
},
"errors": [
{
"target": "com.amazonaws.applicationcostprofiler#AccessDeniedException"
},
{
"target": "com.amazonaws.applicationcostprofiler#InternalServerException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ThrottlingException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "<p>Retrieves a list of all reports and their configurations for your AWS account.</p>\n <p>The maximum number of reports is one.</p>",
"smithy.api#http": {
"method": "GET",
"uri": "/reportDefinition",
"code": 200
},
"smithy.api#paginated": {
"inputToken": "nextToken",
"outputToken": "nextToken",
"pageSize": "maxResults"
}
}
},
"com.amazonaws.applicationcostprofiler#ListReportDefinitionsRequest": {
"type": "structure",
"members": {
"nextToken": {
"target": "com.amazonaws.applicationcostprofiler#Token",
"traits": {
"smithy.api#documentation": "<p>The token value from a previous call to access the next page of results.</p>",
"smithy.api#httpQuery": "nextToken"
}
},
"maxResults": {
"target": "com.amazonaws.applicationcostprofiler#Integer",
"traits": {
"smithy.api#documentation": "<p>The maximum number of results to return.</p>",
"smithy.api#httpQuery": "maxResults"
}
}
}
},
"com.amazonaws.applicationcostprofiler#ListReportDefinitionsResult": {
"type": "structure",
"members": {
"reportDefinitions": {
"target": "com.amazonaws.applicationcostprofiler#ReportDefinitionList",
"traits": {
"smithy.api#documentation": "<p>The retrieved reports.</p>"
}
},
"nextToken": {
"target": "com.amazonaws.applicationcostprofiler#Token",
"traits": {
"smithy.api#documentation": "<p>The value of the next token, if it exists. Null if there are no more results.</p>"
}
}
}
},
"com.amazonaws.applicationcostprofiler#PutReportDefinition": {
"type": "operation",
"input": {
"target": "com.amazonaws.applicationcostprofiler#PutReportDefinitionRequest"
},
"output": {
"target": "com.amazonaws.applicationcostprofiler#PutReportDefinitionResult"
},
"errors": [
{
"target": "com.amazonaws.applicationcostprofiler#AccessDeniedException"
},
{
"target": "com.amazonaws.applicationcostprofiler#InternalServerException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ServiceQuotaExceededException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ThrottlingException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "<p>Creates the report definition for a report in Application Cost Profiler.</p>",
"smithy.api#http": {
"method": "POST",
"uri": "/reportDefinition",
"code": 200
}
}
},
"com.amazonaws.applicationcostprofiler#PutReportDefinitionRequest": {
"type": "structure",
"members": {
"reportId": {
"target": "com.amazonaws.applicationcostprofiler#ReportId",
"traits": {
"smithy.api#documentation": "<p>Required. ID of the report. You can choose any valid string matching the pattern for the\n ID.</p>",
"smithy.api#required": {}
}
},
"reportDescription": {
"target": "com.amazonaws.applicationcostprofiler#ReportDescription",
"traits": {
"smithy.api#documentation": "<p>Required. Description of the report.</p>",
"smithy.api#required": {}
}
},
"reportFrequency": {
"target": "com.amazonaws.applicationcostprofiler#ReportFrequency",
"traits": {
"smithy.api#documentation": "<p>Required. The cadence to generate the report.</p>",
"smithy.api#required": {}
}
},
"format": {
"target": "com.amazonaws.applicationcostprofiler#Format",
"traits": {
"smithy.api#documentation": "<p>Required. The format to use for the generated report.</p>",
"smithy.api#required": {}
}
},
"destinationS3Location": {
"target": "com.amazonaws.applicationcostprofiler#S3Location",
"traits": {
"smithy.api#documentation": "<p>Required. Amazon Simple Storage Service (Amazon S3) location where Application Cost Profiler uploads the\n report.</p>",
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.applicationcostprofiler#PutReportDefinitionResult": {
"type": "structure",
"members": {
"reportId": {
"target": "com.amazonaws.applicationcostprofiler#ReportId",
"traits": {
"smithy.api#documentation": "<p>ID of the report.</p>"
}
}
}
},
"com.amazonaws.applicationcostprofiler#ReportDefinition": {
"type": "structure",
"members": {
"reportId": {
"target": "com.amazonaws.applicationcostprofiler#ReportId",
"traits": {
"smithy.api#documentation": "<p>The ID of the report.</p>"
}
},
"reportDescription": {
"target": "com.amazonaws.applicationcostprofiler#ReportDescription",
"traits": {
"smithy.api#documentation": "<p>Description of the report</p>"
}
},
"reportFrequency": {
"target": "com.amazonaws.applicationcostprofiler#ReportFrequency",
"traits": {
"smithy.api#documentation": "<p>The cadence at which the report is generated.</p>"
}
},
"format": {
"target": "com.amazonaws.applicationcostprofiler#Format",
"traits": {
"smithy.api#documentation": "<p>The format used for the generated reports.</p>"
}
},
"destinationS3Location": {
"target": "com.amazonaws.applicationcostprofiler#S3Location",
"traits": {
"smithy.api#documentation": "<p>The location in Amazon Simple Storage Service (Amazon S3) the reports should be saved to.</p>"
}
},
"createdAt": {
"target": "com.amazonaws.applicationcostprofiler#Timestamp",
"traits": {
"smithy.api#documentation": "<p>Timestamp (milliseconds) when this report definition was created.</p>"
}
},
"lastUpdatedAt": {
"target": "com.amazonaws.applicationcostprofiler#Timestamp",
"traits": {
"smithy.api#documentation": "<p>Timestamp (milliseconds) when this report definition was last updated.</p>"
}
}
},
"traits": {
"smithy.api#documentation": "<p>The configuration of a report in AWS Application Cost Profiler.</p>"
}
},
"com.amazonaws.applicationcostprofiler#ReportDefinitionList": {
"type": "list",
"member": {
"target": "com.amazonaws.applicationcostprofiler#ReportDefinition"
}
},
"com.amazonaws.applicationcostprofiler#ReportDescription": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 1024
},
"smithy.api#pattern": ".*\\S.*"
}
},
"com.amazonaws.applicationcostprofiler#ReportFrequency": {
"type": "string",
"traits": {
"smithy.api#enum": [
{
"value": "MONTHLY",
"name": "MONTHLY"
},
{
"value": "DAILY",
"name": "DAILY"
},
{
"value": "ALL",
"name": "ALL"
}
]
}
},
"com.amazonaws.applicationcostprofiler#ReportId": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 255
},
"smithy.api#pattern": "^[0-9A-Za-z\\.\\-_]+$"
}
},
"com.amazonaws.applicationcostprofiler#S3Bucket": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 3,
"max": 63
},
"smithy.api#pattern": "(?=^.{3,63}$)(?!^(\\d+\\.)+\\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)"
}
},
"com.amazonaws.applicationcostprofiler#S3BucketRegion": {
"type": "string",
"traits": {
"smithy.api#enum": [
{
"value": "ap-east-1",
"name": "AP_EAST_1"
},
{
"value": "me-south-1",
"name": "ME_SOUTH_1"
},
{
"value": "eu-south-1",
"name": "EU_SOUTH_1"
},
{
"value": "af-south-1",
"name": "AF_SOUTH_1"
}
]
}
},
"com.amazonaws.applicationcostprofiler#S3Key": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 512
},
"smithy.api#pattern": ".*\\S.*"
}
},
"com.amazonaws.applicationcostprofiler#S3Location": {
"type": "structure",
"members": {
"bucket": {
"target": "com.amazonaws.applicationcostprofiler#S3Bucket",
"traits": {
"smithy.api#documentation": "<p>Name of the S3 bucket.</p>",
"smithy.api#required": {}
}
},
"prefix": {
"target": "com.amazonaws.applicationcostprofiler#S3Prefix",
"traits": {
"smithy.api#documentation": "<p>Prefix for the location to write to.</p>",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "<p>Represents the Amazon Simple Storage Service (Amazon S3) location where AWS Application Cost Profiler\n reports are generated and then written to.</p>"
}
},
"com.amazonaws.applicationcostprofiler#S3Prefix": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 512
},
"smithy.api#pattern": ".*\\S.*"
}
},
"com.amazonaws.applicationcostprofiler#ServiceQuotaExceededException": {
"type": "structure",
"members": {
"message": {
"target": "com.amazonaws.applicationcostprofiler#ErrorMessage"
}
},
"traits": {
"smithy.api#documentation": "<p>Your request exceeds one or more of the service quotas.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 402
}
},
"com.amazonaws.applicationcostprofiler#SourceS3Location": {
"type": "structure",
"members": {
"bucket": {
"target": "com.amazonaws.applicationcostprofiler#S3Bucket",
"traits": {
"smithy.api#documentation": "<p>Name of the bucket.</p>",
"smithy.api#required": {}
}
},
"key": {
"target": "com.amazonaws.applicationcostprofiler#S3Key",
"traits": {
"smithy.api#documentation": "<p>Key of the object.</p>",
"smithy.api#required": {}
}
},
"region": {
"target": "com.amazonaws.applicationcostprofiler#S3BucketRegion",
"traits": {
"smithy.api#documentation": "<p>Region of the bucket. Only required for Regions that are disabled by default.\n For more infomration about Regions that are disabled by default, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable\">\n Enabling a Region</a> in the <i>AWS General Reference guide</i>.</p>"
}
}
},
"traits": {
"smithy.api#documentation": "<p>Represents the Amazon Simple Storage Service (Amazon S3) location where usage data is read\n from.</p>"
}
},
"com.amazonaws.applicationcostprofiler#ThrottlingException": {
"type": "structure",
"members": {
"message": {
"target": "com.amazonaws.applicationcostprofiler#ErrorMessage"
}
},
"traits": {
"smithy.api#documentation": "<p>The calls to AWS Application Cost Profiler API are throttled. The request was denied.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 429
}
},
"com.amazonaws.applicationcostprofiler#Timestamp": {
"type": "timestamp"
},
"com.amazonaws.applicationcostprofiler#Token": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 102400
},
"smithy.api#pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
}
},
"com.amazonaws.applicationcostprofiler#UpdateReportDefinition": {
"type": "operation",
"input": {
"target": "com.amazonaws.applicationcostprofiler#UpdateReportDefinitionRequest"
},
"output": {
"target": "com.amazonaws.applicationcostprofiler#UpdateReportDefinitionResult"
},
"errors": [
{
"target": "com.amazonaws.applicationcostprofiler#AccessDeniedException"
},
{
"target": "com.amazonaws.applicationcostprofiler#InternalServerException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ThrottlingException"
},
{
"target": "com.amazonaws.applicationcostprofiler#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "<p>Updates existing report in AWS Application Cost Profiler.</p>",
"smithy.api#http": {
"method": "PUT",
"uri": "/reportDefinition/{reportId}",
"code": 200
}
}
},
"com.amazonaws.applicationcostprofiler#UpdateReportDefinitionRequest": {
"type": "structure",
"members": {
"reportId": {
"target": "com.amazonaws.applicationcostprofiler#ReportId",
"traits": {
"smithy.api#documentation": "<p>Required. ID of the report to update.</p>",
"smithy.api#httpLabel": {},
"smithy.api#required": {}
}
},
"reportDescription": {
"target": "com.amazonaws.applicationcostprofiler#ReportDescription",
"traits": {
"smithy.api#documentation": "<p>Required. Description of the report.</p>",
"smithy.api#required": {}
}
},
"reportFrequency": {
"target": "com.amazonaws.applicationcostprofiler#ReportFrequency",
"traits": {
"smithy.api#documentation": "<p>Required. The cadence to generate the report.</p>",
"smithy.api#required": {}
}
},
"format": {
"target": "com.amazonaws.applicationcostprofiler#Format",
"traits": {
"smithy.api#documentation": "<p>Required. The format to use for the generated report.</p>",
"smithy.api#required": {}
}
},
"destinationS3Location": {
"target": "com.amazonaws.applicationcostprofiler#S3Location",
"traits": {
"smithy.api#documentation": "<p>Required. Amazon Simple Storage Service (Amazon S3) location where Application Cost Profiler uploads the\n report.</p>",
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.applicationcostprofiler#UpdateReportDefinitionResult": {
"type": "structure",
"members": {
"reportId": {
"target": "com.amazonaws.applicationcostprofiler#ReportId",
"traits": {
"smithy.api#documentation": "<p>ID of the report.</p>"
}
}
}
},
"com.amazonaws.applicationcostprofiler#ValidationException": {
"type": "structure",
"members": {
"message": {
"target": "com.amazonaws.applicationcostprofiler#ErrorMessage"
}
},
"traits": {
"smithy.api#documentation": "<p>The input fails to satisfy the constraints for the API.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 400
}
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1,584 +0,0 @@
{
"smithy": "1.0",
"metadata": {
"suppressions": [
{
"id": "HttpMethodSemantics",
"namespace": "*"
},
{
"id": "HttpResponseCodeSemantics",
"namespace": "*"
},
{
"id": "PaginatedTrait",
"namespace": "*"
},
{
"id": "HttpHeaderTrait",
"namespace": "*"
},
{
"id": "HttpUriConflict",
"namespace": "*"
},
{
"id": "Service",
"namespace": "*"
}
]
},
"shapes": {
"com.amazonaws.connectcontactlens#AccessDeniedException": {
"type": "structure",
"members": {
"Message": {
"target": "com.amazonaws.connectcontactlens#Message",
"traits": {
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "<p>You do not have sufficient access to perform this action.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 403
}
},
"com.amazonaws.connectcontactlens#AmazonConnectContactLens": {
"type": "service",
"version": "2020-08-21",
"operations": [
{
"target": "com.amazonaws.connectcontactlens#ListRealtimeContactAnalysisSegments"
}
],
"traits": {
"aws.api#service": {
"sdkId": "Connect Contact Lens",
"arnNamespace": "connect",
"cloudFormationName": "ConnectContactLens",
"cloudTrailEventSource": "connectcontactlens.amazonaws.com",
"endpointPrefix": "contact-lens"
},
"aws.auth#sigv4": {
"name": "connect"
},
"aws.protocols#restJson1": {},
"smithy.api#documentation": "<p>Contact Lens for Amazon Connect enables you to analyze conversations between customer and agents,\n by using speech transcription, natural language processing, and intelligent search\n capabilities. It performs sentiment analysis, detects issues, and enables you to automatically\n categorize contacts.</p>\n <p>Contact Lens for Amazon Connect provides both real-time and post-call analytics of customer-agent\n conversations. For more information, see <a href=\"https://docs.aws.amazon.com/connect/latest/adminguide/analyze-conversations.html\">Analyze conversations using\n Contact Lens</a> in the <i>Amazon Connect Administrator Guide</i>. </p>",
"smithy.api#title": "Amazon Connect Contact Lens"
}
},
"com.amazonaws.connectcontactlens#Categories": {
"type": "structure",
"members": {
"MatchedCategories": {
"target": "com.amazonaws.connectcontactlens#MatchedCategories",
"traits": {
"smithy.api#documentation": "<p>The category rules that have been matched in the analyzed segment.</p>",
"smithy.api#required": {}
}
},
"MatchedDetails": {
"target": "com.amazonaws.connectcontactlens#MatchedDetails",
"traits": {
"smithy.api#documentation": "<p>The category rule that was matched and when it occurred in the transcript.</p>",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "<p>Provides the category rules that are used to automatically categorize contacts based on\n uttered keywords and phrases.</p>"
}
},
"com.amazonaws.connectcontactlens#CategoryDetails": {
"type": "structure",
"members": {
"PointsOfInterest": {
"target": "com.amazonaws.connectcontactlens#PointsOfInterest",
"traits": {
"smithy.api#documentation": "<p>The section of audio where the category rule was detected.</p>",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "<p>Provides information about the category rule that was matched.</p>"
}
},
"com.amazonaws.connectcontactlens#CategoryName": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 256
},
"smithy.api#pattern": ".*\\S.*"
}
},
"com.amazonaws.connectcontactlens#CharacterOffset": {
"type": "integer",
"traits": {
"smithy.api#range": {
"min": 0
}
}
},
"com.amazonaws.connectcontactlens#CharacterOffsets": {
"type": "structure",
"members": {
"BeginOffsetChar": {
"target": "com.amazonaws.connectcontactlens#CharacterOffset",
"traits": {
"smithy.api#documentation": "<p>The beginning of the issue.</p>",
"smithy.api#required": {}
}
},
"EndOffsetChar": {
"target": "com.amazonaws.connectcontactlens#CharacterOffset",
"traits": {
"smithy.api#documentation": "<p>The end of the issue.</p>",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "<p>For characters that were detected as issues, where they occur in the transcript.</p>"
}
},
"com.amazonaws.connectcontactlens#ContactId": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 256
},
"smithy.api#pattern": ".*\\S.*"
}
},
"com.amazonaws.connectcontactlens#InstanceId": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 256
},
"smithy.api#pattern": ".*\\S.*"
}
},
"com.amazonaws.connectcontactlens#InternalServiceException": {
"type": "structure",
"members": {
"Message": {
"target": "com.amazonaws.connectcontactlens#Message"
}
},
"traits": {
"smithy.api#documentation": "<p>Request processing failed due to an error or failure with the service.</p>",
"smithy.api#error": "server",
"smithy.api#httpError": 500
}
},
"com.amazonaws.connectcontactlens#InvalidRequestException": {
"type": "structure",
"members": {
"Message": {
"target": "com.amazonaws.connectcontactlens#Message"
}
},
"traits": {
"smithy.api#documentation": "<p>The request is not valid.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 400
}
},
"com.amazonaws.connectcontactlens#IssueDetected": {
"type": "structure",
"members": {
"CharacterOffsets": {
"target": "com.amazonaws.connectcontactlens#CharacterOffsets",
"traits": {
"smithy.api#documentation": "<p>The offset for when the issue was detected in the segment.</p>",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "<p>Potential issues that are detected based on an artificial intelligence analysis of each\n turn in the conversation.</p>"
}
},
"com.amazonaws.connectcontactlens#IssuesDetected": {
"type": "list",
"member": {
"target": "com.amazonaws.connectcontactlens#IssueDetected"
},
"traits": {
"smithy.api#length": {
"min": 0,
"max": 20
}
}
},
"com.amazonaws.connectcontactlens#ListRealtimeContactAnalysisSegments": {
"type": "operation",
"input": {
"target": "com.amazonaws.connectcontactlens#ListRealtimeContactAnalysisSegmentsRequest"
},
"output": {
"target": "com.amazonaws.connectcontactlens#ListRealtimeContactAnalysisSegmentsResponse"
},
"errors": [
{
"target": "com.amazonaws.connectcontactlens#AccessDeniedException"
},
{
"target": "com.amazonaws.connectcontactlens#InternalServiceException"
},
{
"target": "com.amazonaws.connectcontactlens#InvalidRequestException"
},
{
"target": "com.amazonaws.connectcontactlens#ResourceNotFoundException"
},
{
"target": "com.amazonaws.connectcontactlens#ThrottlingException"
}
],
"traits": {
"smithy.api#documentation": "<p>Provides a list of analysis segments for a real-time analysis session.</p>",
"smithy.api#http": {
"method": "POST",
"uri": "/realtime-contact-analysis/analysis-segments",
"code": 200
},
"smithy.api#paginated": {
"inputToken": "NextToken",
"outputToken": "NextToken",
"pageSize": "MaxResults"
}
}
},
"com.amazonaws.connectcontactlens#ListRealtimeContactAnalysisSegmentsRequest": {
"type": "structure",
"members": {
"InstanceId": {
"target": "com.amazonaws.connectcontactlens#InstanceId",
"traits": {
"smithy.api#documentation": "<p>The identifier of the Amazon Connect instance.</p>",
"smithy.api#required": {}
}
},
"ContactId": {
"target": "com.amazonaws.connectcontactlens#ContactId",
"traits": {
"smithy.api#documentation": "<p>The identifier of the contact.</p>",
"smithy.api#required": {}
}
},
"MaxResults": {
"target": "com.amazonaws.connectcontactlens#MaxResults",
"traits": {
"smithy.api#documentation": "<p>The maximimum number of results to return per page.</p>"
}
},
"NextToken": {
"target": "com.amazonaws.connectcontactlens#NextToken",
"traits": {
"smithy.api#documentation": "<p>The token for the next set of results. Use the value returned in the previous \nresponse in the next request to retrieve the next set of results.</p>"
}
}
}
},
"com.amazonaws.connectcontactlens#ListRealtimeContactAnalysisSegmentsResponse": {
"type": "structure",
"members": {
"Segments": {
"target": "com.amazonaws.connectcontactlens#RealtimeContactAnalysisSegments",
"traits": {
"smithy.api#documentation": "<p>An analyzed transcript or category.</p>",
"smithy.api#required": {}
}
},
"NextToken": {
"target": "com.amazonaws.connectcontactlens#NextToken",
"traits": {
"smithy.api#documentation": "<p>If there are additional results, this is the token for the next set of results. If response includes <code>nextToken</code> there are two possible scenarios:</p>\n <ul>\n <li>\n <p>There are more segments so another call is required to get them.</p>\n </li>\n <li>\n <p>There are no more segments at this time, but more may be available later (real-time\n analysis is in progress) so the client should call the operation again to get new\n segments.</p>\n </li>\n </ul>\n <p>If response does not include <code>nextToken</code>, the analysis is completed (successfully or failed) and there are no more segments to retrieve.</p>"
}
}
}
},
"com.amazonaws.connectcontactlens#MatchedCategories": {
"type": "list",
"member": {
"target": "com.amazonaws.connectcontactlens#CategoryName"
},
"traits": {
"smithy.api#length": {
"min": 0,
"max": 150
}
}
},
"com.amazonaws.connectcontactlens#MatchedDetails": {
"type": "map",
"key": {
"target": "com.amazonaws.connectcontactlens#CategoryName"
},
"value": {
"target": "com.amazonaws.connectcontactlens#CategoryDetails"
},
"traits": {
"smithy.api#length": {
"min": 0,
"max": 150
}
}
},
"com.amazonaws.connectcontactlens#MaxResults": {
"type": "integer",
"traits": {
"smithy.api#range": {
"min": 1,
"max": 100
}
}
},
"com.amazonaws.connectcontactlens#Message": {
"type": "string"
},
"com.amazonaws.connectcontactlens#NextToken": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 131070
},
"smithy.api#pattern": ".*\\S.*"
}
},
"com.amazonaws.connectcontactlens#OffsetMillis": {
"type": "integer",
"traits": {
"smithy.api#range": {
"min": 0
}
}
},
"com.amazonaws.connectcontactlens#ParticipantId": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 256
},
"smithy.api#pattern": ".*\\S.*"
}
},
"com.amazonaws.connectcontactlens#ParticipantRole": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 256
},
"smithy.api#pattern": ".*\\S.*"
}
},
"com.amazonaws.connectcontactlens#PointOfInterest": {
"type": "structure",
"members": {
"BeginOffsetMillis": {
"target": "com.amazonaws.connectcontactlens#OffsetMillis",
"traits": {
"smithy.api#documentation": "<p>The beginning offset in milliseconds where the category rule was detected.</p>",
"smithy.api#required": {}
}
},
"EndOffsetMillis": {
"target": "com.amazonaws.connectcontactlens#OffsetMillis",
"traits": {
"smithy.api#documentation": "<p>The ending offset in milliseconds where the category rule was detected.</p>",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "<p>The section of the contact audio where that category rule was detected.</p>"
}
},
"com.amazonaws.connectcontactlens#PointsOfInterest": {
"type": "list",
"member": {
"target": "com.amazonaws.connectcontactlens#PointOfInterest"
},
"traits": {
"smithy.api#length": {
"min": 0,
"max": 20
}
}
},
"com.amazonaws.connectcontactlens#RealtimeContactAnalysisSegment": {
"type": "structure",
"members": {
"Transcript": {
"target": "com.amazonaws.connectcontactlens#Transcript",
"traits": {
"smithy.api#documentation": "<p>The analyzed transcript.</p>"
}
},
"Categories": {
"target": "com.amazonaws.connectcontactlens#Categories",
"traits": {
"smithy.api#documentation": "<p>The matched category rules.</p>"
}
}
},
"traits": {
"smithy.api#documentation": "<p>An analyzed segment for a real-time analysis session.</p>"
}
},
"com.amazonaws.connectcontactlens#RealtimeContactAnalysisSegments": {
"type": "list",
"member": {
"target": "com.amazonaws.connectcontactlens#RealtimeContactAnalysisSegment"
},
"traits": {
"smithy.api#length": {
"min": 0,
"max": 100
}
}
},
"com.amazonaws.connectcontactlens#ResourceNotFoundException": {
"type": "structure",
"members": {
"Message": {
"target": "com.amazonaws.connectcontactlens#Message"
}
},
"traits": {
"smithy.api#documentation": "<p>The specified resource was not found.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 404
}
},
"com.amazonaws.connectcontactlens#SentimentValue": {
"type": "string",
"traits": {
"smithy.api#enum": [
{
"value": "POSITIVE",
"name": "POSITIVE"
},
{
"value": "NEUTRAL",
"name": "NEUTRAL"
},
{
"value": "NEGATIVE",
"name": "NEGATIVE"
}
]
}
},
"com.amazonaws.connectcontactlens#ThrottlingException": {
"type": "structure",
"members": {
"Message": {
"target": "com.amazonaws.connectcontactlens#Message",
"traits": {
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "<p>The throttling limit has been exceeded.</p>",
"smithy.api#error": "client",
"smithy.api#httpError": 429
}
},
"com.amazonaws.connectcontactlens#Transcript": {
"type": "structure",
"members": {
"Id": {
"target": "com.amazonaws.connectcontactlens#TranscriptId",
"traits": {
"smithy.api#documentation": "<p>The identifier of the transcript.</p>",
"smithy.api#required": {}
}
},
"ParticipantId": {
"target": "com.amazonaws.connectcontactlens#ParticipantId",
"traits": {
"smithy.api#documentation": "<p>The identifier of the participant.</p>",
"smithy.api#required": {}
}
},
"ParticipantRole": {
"target": "com.amazonaws.connectcontactlens#ParticipantRole",
"traits": {
"smithy.api#documentation": "<p>The role of participant. For example, is it a customer, agent, or system.</p>",
"smithy.api#required": {}
}
},
"Content": {
"target": "com.amazonaws.connectcontactlens#TranscriptContent",
"traits": {
"smithy.api#documentation": "<p>The content of the transcript.</p>",
"smithy.api#required": {}
}
},
"BeginOffsetMillis": {
"target": "com.amazonaws.connectcontactlens#OffsetMillis",
"traits": {
"smithy.api#documentation": "<p>The beginning offset in the contact for this transcript.</p>",
"smithy.api#required": {}
}
},
"EndOffsetMillis": {
"target": "com.amazonaws.connectcontactlens#OffsetMillis",
"traits": {
"smithy.api#documentation": "<p>The end offset in the contact for this transcript.</p>",
"smithy.api#required": {}
}
},
"Sentiment": {
"target": "com.amazonaws.connectcontactlens#SentimentValue",
"traits": {
"smithy.api#documentation": "<p>The sentiment of the detected for this piece of transcript.</p>",
"smithy.api#required": {}
}
},
"IssuesDetected": {
"target": "com.amazonaws.connectcontactlens#IssuesDetected",
"traits": {
"smithy.api#documentation": "<p>List of positions where issues were detected on the transcript.</p>"
}
}
},
"traits": {
"smithy.api#documentation": "<p>A list of messages in the session.</p>"
}
},
"com.amazonaws.connectcontactlens#TranscriptContent": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1
},
"smithy.api#pattern": ".*\\S.*"
}
},
"com.amazonaws.connectcontactlens#TranscriptId": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 1,
"max": 256
},
"smithy.api#pattern": ".*\\S.*"
}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,695 +0,0 @@
{
"smithy": "1.0",
"metadata": {
"suppressions": [
{
"id": "HttpMethodSemantics",
"namespace": "*"
},
{
"id": "HttpResponseCodeSemantics",
"namespace": "*"
},
{
"id": "PaginatedTrait",
"namespace": "*"
},
{
"id": "HttpHeaderTrait",
"namespace": "*"
},
{
"id": "HttpUriConflict",
"namespace": "*"
},
{
"id": "Service",
"namespace": "*"
}
]
},
"shapes": {
"com.amazonaws.costandusagereportservice#AWSOrigamiServiceGatewayService": {
"type": "service",
"version": "2017-01-06",
"operations": [
{
"target": "com.amazonaws.costandusagereportservice#DeleteReportDefinition"
},
{
"target": "com.amazonaws.costandusagereportservice#DescribeReportDefinitions"
},
{
"target": "com.amazonaws.costandusagereportservice#ModifyReportDefinition"
},
{
"target": "com.amazonaws.costandusagereportservice#PutReportDefinition"
}
],
"traits": {
"aws.api#service": {
"sdkId": "Cost and Usage Report Service",
"arnNamespace": "cur",
"cloudFormationName": "CostandUsageReportService",
"cloudTrailEventSource": "costandusagereportservice.amazonaws.com",
"endpointPrefix": "cur"
},
"aws.auth#sigv4": {
"name": "cur"
},
"aws.protocols#awsJson1_1": {},
"smithy.api#documentation": "<p>The AWS Cost and Usage Report API enables you to programmatically create, query, and delete \n AWS Cost and Usage report definitions.</p>\n <p>AWS Cost and Usage reports track the monthly AWS costs and usage \n associated with your AWS account.\n \n The report contains line items for each unique combination of AWS product,\n usage type, and operation that your AWS account uses. \n \n You can configure the AWS Cost and Usage report to show only the data that you want, using the\n AWS Cost and Usage API.</p>\n\n <p>Service Endpoint</p>\n <p>The AWS Cost and Usage Report API provides the following endpoint:</p>\n <ul>\n <li>\n <p>cur.us-east-1.amazonaws.com</p>\n </li>\n </ul>",
"smithy.api#title": "AWS Cost and Usage Report Service"
}
},
"com.amazonaws.costandusagereportservice#AWSRegion": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>The region of the S3 bucket that AWS delivers the report into.</p>",
"smithy.api#enum": [
{
"value": "af-south-1",
"name": "CAPE_TOWN"
},
{
"value": "ap-east-1",
"name": "HONG_KONG"
},
{
"value": "ap-south-1",
"name": "MUMBAI"
},
{
"value": "ap-southeast-1",
"name": "SINGAPORE"
},
{
"value": "ap-southeast-2",
"name": "SYDNEY"
},
{
"value": "ap-northeast-1",
"name": "TOKYO"
},
{
"value": "ap-northeast-2",
"name": "SEOUL"
},
{
"value": "ap-northeast-3",
"name": "OSAKA"
},
{
"value": "ca-central-1",
"name": "CANADA_CENTRAL"
},
{
"value": "eu-central-1",
"name": "FRANKFURT"
},
{
"value": "eu-west-1",
"name": "IRELAND"
},
{
"value": "eu-west-2",
"name": "LONDON"
},
{
"value": "eu-west-3",
"name": "PARIS"
},
{
"value": "eu-north-1",
"name": "STOCKHOLM"
},
{
"value": "eu-south-1",
"name": "MILANO"
},
{
"value": "me-south-1",
"name": "BAHRAIN"
},
{
"value": "sa-east-1",
"name": "SAO_PAULO"
},
{
"value": "us-east-1",
"name": "US_STANDARD"
},
{
"value": "us-east-2",
"name": "OHIO"
},
{
"value": "us-west-1",
"name": "NORTHERN_CALIFORNIA"
},
{
"value": "us-west-2",
"name": "OREGON"
},
{
"value": "cn-north-1",
"name": "BEIJING"
},
{
"value": "cn-northwest-1",
"name": "NINGXIA"
}
]
}
},
"com.amazonaws.costandusagereportservice#AdditionalArtifact": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>The types of manifest that you want AWS to create for this report.</p>",
"smithy.api#enum": [
{
"value": "REDSHIFT",
"name": "REDSHIFT"
},
{
"value": "QUICKSIGHT",
"name": "QUICKSIGHT"
},
{
"value": "ATHENA",
"name": "ATHENA"
}
]
}
},
"com.amazonaws.costandusagereportservice#AdditionalArtifactList": {
"type": "list",
"member": {
"target": "com.amazonaws.costandusagereportservice#AdditionalArtifact"
},
"traits": {
"smithy.api#documentation": "<p>A list of additional artifacts.</p>"
}
},
"com.amazonaws.costandusagereportservice#BillingViewArn": {
"type": "string",
"traits": {
"smithy.api#length": {
"min": 0,
"max": 128
},
"smithy.api#pattern": "(arn:aws(-cn)?:billing::[0-9]{12}:billingview/)?[a-zA-Z0-9_\\+=\\.\\-@].{1,30}"
}
},
"com.amazonaws.costandusagereportservice#CompressionFormat": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>The compression format that AWS uses for the report.</p>",
"smithy.api#enum": [
{
"value": "ZIP",
"name": "ZIP"
},
{
"value": "GZIP",
"name": "GZIP"
},
{
"value": "Parquet",
"name": "Parquet"
}
]
}
},
"com.amazonaws.costandusagereportservice#DeleteReportDefinition": {
"type": "operation",
"input": {
"target": "com.amazonaws.costandusagereportservice#DeleteReportDefinitionRequest"
},
"output": {
"target": "com.amazonaws.costandusagereportservice#DeleteReportDefinitionResponse"
},
"errors": [
{
"target": "com.amazonaws.costandusagereportservice#InternalErrorException"
},
{
"target": "com.amazonaws.costandusagereportservice#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "<p>Deletes the specified report.</p>"
}
},
"com.amazonaws.costandusagereportservice#DeleteReportDefinitionRequest": {
"type": "structure",
"members": {
"ReportName": {
"target": "com.amazonaws.costandusagereportservice#ReportName",
"traits": {
"smithy.api#documentation": "<p>The name of the report that you want to delete. The name must be unique, is case sensitive, and can't include spaces.</p>"
}
}
},
"traits": {
"smithy.api#documentation": "<p>Deletes the specified report.</p>"
}
},
"com.amazonaws.costandusagereportservice#DeleteReportDefinitionResponse": {
"type": "structure",
"members": {
"ResponseMessage": {
"target": "com.amazonaws.costandusagereportservice#DeleteResponseMessage"
}
},
"traits": {
"smithy.api#documentation": "<p>If the action is successful, the service sends back an HTTP 200 response.</p>"
}
},
"com.amazonaws.costandusagereportservice#DeleteResponseMessage": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>Whether the deletion was successful or not.</p>"
}
},
"com.amazonaws.costandusagereportservice#DescribeReportDefinitions": {
"type": "operation",
"input": {
"target": "com.amazonaws.costandusagereportservice#DescribeReportDefinitionsRequest"
},
"output": {
"target": "com.amazonaws.costandusagereportservice#DescribeReportDefinitionsResponse"
},
"errors": [
{
"target": "com.amazonaws.costandusagereportservice#InternalErrorException"
}
],
"traits": {
"smithy.api#documentation": "<p>Lists the AWS Cost and Usage reports available to this account.</p>",
"smithy.api#paginated": {
"inputToken": "NextToken",
"outputToken": "NextToken",
"pageSize": "MaxResults"
}
}
},
"com.amazonaws.costandusagereportservice#DescribeReportDefinitionsRequest": {
"type": "structure",
"members": {
"MaxResults": {
"target": "com.amazonaws.costandusagereportservice#MaxResults"
},
"NextToken": {
"target": "com.amazonaws.costandusagereportservice#GenericString"
}
},
"traits": {
"smithy.api#documentation": "<p>Requests a list of AWS Cost and Usage reports owned by the account.</p>"
}
},
"com.amazonaws.costandusagereportservice#DescribeReportDefinitionsResponse": {
"type": "structure",
"members": {
"ReportDefinitions": {
"target": "com.amazonaws.costandusagereportservice#ReportDefinitionList",
"traits": {
"smithy.api#documentation": "<p>A list of AWS Cost and Usage reports owned by the account.</p>"
}
},
"NextToken": {
"target": "com.amazonaws.costandusagereportservice#GenericString"
}
},
"traits": {
"smithy.api#documentation": "<p>If the action is successful, the service sends back an HTTP 200 response.</p>"
}
},
"com.amazonaws.costandusagereportservice#DuplicateReportNameException": {
"type": "structure",
"members": {
"Message": {
"target": "com.amazonaws.costandusagereportservice#ErrorMessage"
}
},
"traits": {
"smithy.api#documentation": "<p>A report with the specified name already exists in the account. Specify a different report name.</p>",
"smithy.api#error": "client"
}
},
"com.amazonaws.costandusagereportservice#ErrorMessage": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>A message to show the detail of the exception.</p>"
}
},
"com.amazonaws.costandusagereportservice#GenericString": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>A generic string.</p>",
"smithy.api#length": {
"min": 0,
"max": 256
},
"smithy.api#pattern": "[A-Za-z0-9_\\.\\-=]*"
}
},
"com.amazonaws.costandusagereportservice#InternalErrorException": {
"type": "structure",
"members": {
"Message": {
"target": "com.amazonaws.costandusagereportservice#ErrorMessage"
}
},
"traits": {
"smithy.api#documentation": "<p>An error on the server occurred during the processing of your request. Try again later.</p>",
"smithy.api#error": "server"
}
},
"com.amazonaws.costandusagereportservice#MaxResults": {
"type": "integer",
"traits": {
"smithy.api#box": {},
"smithy.api#documentation": "<p>The maximum number of results that AWS returns for the operation.</p>",
"smithy.api#range": {
"min": 5,
"max": 5
}
}
},
"com.amazonaws.costandusagereportservice#ModifyReportDefinition": {
"type": "operation",
"input": {
"target": "com.amazonaws.costandusagereportservice#ModifyReportDefinitionRequest"
},
"output": {
"target": "com.amazonaws.costandusagereportservice#ModifyReportDefinitionResponse"
},
"errors": [
{
"target": "com.amazonaws.costandusagereportservice#InternalErrorException"
},
{
"target": "com.amazonaws.costandusagereportservice#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "<p>Allows you to programatically update your report preferences.</p>"
}
},
"com.amazonaws.costandusagereportservice#ModifyReportDefinitionRequest": {
"type": "structure",
"members": {
"ReportName": {
"target": "com.amazonaws.costandusagereportservice#ReportName",
"traits": {
"smithy.api#required": {}
}
},
"ReportDefinition": {
"target": "com.amazonaws.costandusagereportservice#ReportDefinition",
"traits": {
"smithy.api#required": {}
}
}
}
},
"com.amazonaws.costandusagereportservice#ModifyReportDefinitionResponse": {
"type": "structure",
"members": {}
},
"com.amazonaws.costandusagereportservice#PutReportDefinition": {
"type": "operation",
"input": {
"target": "com.amazonaws.costandusagereportservice#PutReportDefinitionRequest"
},
"output": {
"target": "com.amazonaws.costandusagereportservice#PutReportDefinitionResponse"
},
"errors": [
{
"target": "com.amazonaws.costandusagereportservice#DuplicateReportNameException"
},
{
"target": "com.amazonaws.costandusagereportservice#InternalErrorException"
},
{
"target": "com.amazonaws.costandusagereportservice#ReportLimitReachedException"
},
{
"target": "com.amazonaws.costandusagereportservice#ValidationException"
}
],
"traits": {
"smithy.api#documentation": "<p>Creates a new report using the description that you provide.</p>"
}
},
"com.amazonaws.costandusagereportservice#PutReportDefinitionRequest": {
"type": "structure",
"members": {
"ReportDefinition": {
"target": "com.amazonaws.costandusagereportservice#ReportDefinition",
"traits": {
"smithy.api#documentation": "<p>Represents the output of the PutReportDefinition operation. The content consists of the detailed \n metadata and data file information. </p>",
"smithy.api#required": {}
}
}
},
"traits": {
"smithy.api#documentation": "<p>Creates a Cost and Usage Report.</p>"
}
},
"com.amazonaws.costandusagereportservice#PutReportDefinitionResponse": {
"type": "structure",
"members": {},
"traits": {
"smithy.api#documentation": "<p>If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.</p>"
}
},
"com.amazonaws.costandusagereportservice#RefreshClosedReports": {
"type": "boolean",
"traits": {
"smithy.api#box": {}
}
},
"com.amazonaws.costandusagereportservice#ReportDefinition": {
"type": "structure",
"members": {
"ReportName": {
"target": "com.amazonaws.costandusagereportservice#ReportName",
"traits": {
"smithy.api#required": {}
}
},
"TimeUnit": {
"target": "com.amazonaws.costandusagereportservice#TimeUnit",
"traits": {
"smithy.api#required": {}
}
},
"Format": {
"target": "com.amazonaws.costandusagereportservice#ReportFormat",
"traits": {
"smithy.api#required": {}
}
},
"Compression": {
"target": "com.amazonaws.costandusagereportservice#CompressionFormat",
"traits": {
"smithy.api#required": {}
}
},
"AdditionalSchemaElements": {
"target": "com.amazonaws.costandusagereportservice#SchemaElementList",
"traits": {
"smithy.api#documentation": "<p>A list of strings that indicate additional content that Amazon Web Services includes in the report, such as individual resource IDs. </p>",
"smithy.api#required": {}
}
},
"S3Bucket": {
"target": "com.amazonaws.costandusagereportservice#S3Bucket",
"traits": {
"smithy.api#required": {}
}
},
"S3Prefix": {
"target": "com.amazonaws.costandusagereportservice#S3Prefix",
"traits": {
"smithy.api#required": {}
}
},
"S3Region": {
"target": "com.amazonaws.costandusagereportservice#AWSRegion",
"traits": {
"smithy.api#required": {}
}
},
"AdditionalArtifacts": {
"target": "com.amazonaws.costandusagereportservice#AdditionalArtifactList",
"traits": {
"smithy.api#documentation": "<p>A list of manifests that you want Amazon Web Services to create for this report.</p>"
}
},
"RefreshClosedReports": {
"target": "com.amazonaws.costandusagereportservice#RefreshClosedReports",
"traits": {
"smithy.api#documentation": "<p>Whether you want Amazon Web Services to update your reports after they have been finalized if Amazon Web Services detects charges related to \n previous months. These charges can include refunds, credits, or support fees.</p>"
}
},
"ReportVersioning": {
"target": "com.amazonaws.costandusagereportservice#ReportVersioning",
"traits": {
"smithy.api#documentation": "<p>Whether you want Amazon Web Services to overwrite the previous version of each report or \n to deliver the report in addition to the previous versions.</p>"
}
},
"BillingViewArn": {
"target": "com.amazonaws.costandusagereportservice#BillingViewArn",
"traits": {
"smithy.api#documentation": "<p>\n The Amazon resource name of the billing view. You can get this value by using the billing view service public APIs.\n </p>"
}
}
},
"traits": {
"smithy.api#documentation": "<p>The definition of AWS Cost and Usage Report. You can specify the report name, \n time unit, report format, compression format, S3 bucket, additional artifacts, and schema \n elements in the definition.\n </p>"
}
},
"com.amazonaws.costandusagereportservice#ReportDefinitionList": {
"type": "list",
"member": {
"target": "com.amazonaws.costandusagereportservice#ReportDefinition"
},
"traits": {
"smithy.api#documentation": "<p>A list of report definitions.</p>"
}
},
"com.amazonaws.costandusagereportservice#ReportFormat": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>The format that AWS saves the report in.</p>",
"smithy.api#enum": [
{
"value": "textORcsv",
"name": "CSV"
},
{
"value": "Parquet",
"name": "Parquet"
}
]
}
},
"com.amazonaws.costandusagereportservice#ReportLimitReachedException": {
"type": "structure",
"members": {
"Message": {
"target": "com.amazonaws.costandusagereportservice#ErrorMessage"
}
},
"traits": {
"smithy.api#documentation": "<p>This account already has five reports defined. To define a new report, you must delete an existing report.</p>",
"smithy.api#error": "client"
}
},
"com.amazonaws.costandusagereportservice#ReportName": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>The name of the report that you want to create. The name must be unique,\n is case sensitive, and can't include spaces. </p>",
"smithy.api#length": {
"min": 0,
"max": 256
},
"smithy.api#pattern": "[0-9A-Za-z!\\-_.*\\'()]+"
}
},
"com.amazonaws.costandusagereportservice#ReportVersioning": {
"type": "string",
"traits": {
"smithy.api#enum": [
{
"value": "CREATE_NEW_REPORT",
"name": "CREATE_NEW_REPORT"
},
{
"value": "OVERWRITE_REPORT",
"name": "OVERWRITE_REPORT"
}
]
}
},
"com.amazonaws.costandusagereportservice#S3Bucket": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>The S3 bucket where AWS delivers the report.</p>",
"smithy.api#length": {
"min": 0,
"max": 256
},
"smithy.api#pattern": "[A-Za-z0-9_\\.\\-]+"
}
},
"com.amazonaws.costandusagereportservice#S3Prefix": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>The prefix that AWS adds to the report name when AWS delivers the report. Your prefix\n can't include spaces.</p>",
"smithy.api#length": {
"min": 0,
"max": 256
},
"smithy.api#pattern": "[0-9A-Za-z!\\-_.*\\'()/]*"
}
},
"com.amazonaws.costandusagereportservice#SchemaElement": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>Whether or not AWS includes resource IDs in the report. </p>",
"smithy.api#enum": [
{
"value": "RESOURCES",
"name": "RESOURCES"
}
]
}
},
"com.amazonaws.costandusagereportservice#SchemaElementList": {
"type": "list",
"member": {
"target": "com.amazonaws.costandusagereportservice#SchemaElement"
},
"traits": {
"smithy.api#documentation": "<p>A list of strings that indicate the content that is included in the report, such as service or usage type.</p>"
}
},
"com.amazonaws.costandusagereportservice#TimeUnit": {
"type": "string",
"traits": {
"smithy.api#documentation": "<p>The length of time covered by the report. </p>",
"smithy.api#enum": [
{
"value": "HOURLY",
"name": "HOURLY"
},
{
"value": "DAILY",
"name": "DAILY"
},
{
"value": "MONTHLY",
"name": "MONTHLY"
}
]
}
},
"com.amazonaws.costandusagereportservice#ValidationException": {
"type": "structure",
"members": {
"Message": {
"target": "com.amazonaws.costandusagereportservice#ErrorMessage"
}
},
"traits": {
"smithy.api#documentation": "<p>The input fails to satisfy the constraints specified by an AWS service.</p>",
"smithy.api#error": "client"
}
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more