Compare commits
270 commits
Author | SHA1 | Date | |
---|---|---|---|
8ac7aa47f7 | |||
e194debb96 | |||
e0e09fb19e | |||
8421fd9e55 | |||
9e8b3a6fc6 | |||
34c097e45f | |||
ffe3941dbe | |||
cdaf924867 | |||
6c106c1c71 | |||
f325ef4236 | |||
30d46261b7 | |||
86483ec84d | |||
4f16553410 | |||
12e24b01ad | |||
|
220d45ab20 | ||
|
71495a4d1d | ||
|
303af8661c | ||
8c68dd6902 | |||
96e2b7bbc1 | |||
acd6589909 | |||
78b36e2316 | |||
b369c29e84 | |||
e3bb4142d6 | |||
4313f8585b | |||
e02fb699fc | |||
dfda8e77d6 | |||
35fad85c13 | |||
88d7e99d6b | |||
0cda404b0a | |||
5aa191c415 | |||
370011eb1e | |||
debb4dab60 | |||
6240225db2 | |||
0adebe10da | |||
0892914c5b | |||
97b784f8e3 | |||
4fa30a70cc | |||
9497db373c | |||
3d78705ea5 | |||
1e2b3a6759 | |||
908c9d2d42 | |||
1fdff0bacd | |||
1fe39007c5 | |||
c5cb3dde29 | |||
f5663fd84d | |||
c056dbb0ff | |||
9e8198cee4 | |||
43238a97eb | |||
b048b1193d | |||
f85eb4caf1 | |||
0bd583cae0 | |||
3b35936ac6 | |||
262cdefe12 | |||
238952d127 | |||
38b51c768b | |||
86877ca264 | |||
e5b662873a | |||
a9f99c0205 | |||
c1c40644ac | |||
927871c59e | |||
7298c6d3ee | |||
4bfd9cb7bc | |||
3e89ec468a | |||
d84246333c | |||
f558b058e1 | |||
e665b94683 | |||
dd6a87a034 | |||
61592f039d | |||
c8f625068d | |||
ffbbf21303 | |||
a659c99350 | |||
981d5579f1 | |||
3307eb6b8f | |||
332aa1a855 | |||
7d80f42a3e | |||
be9a52ed6a | |||
e847af6d4c | |||
c60c40f627 | |||
c40539b7b0 | |||
007f2f588a | |||
dc5f040a2f | |||
3887e630d6 | |||
c825ef72fe | |||
52a5865caa | |||
bf4097cd5b | |||
18d8258eaf | |||
b49bb9ad90 | |||
a0773971f2 | |||
484b504090 | |||
45e87cf202 | |||
99a61c0bd2 | |||
b2c8fc5f3c | |||
62973bf4bf | |||
2f5f9edb36 | |||
b1b2a6cc7a | |||
e74a0e9456 | |||
723e0b0989 | |||
a3117eea54 | |||
afdc75c1c6 | |||
e6634d3c0f | |||
57e994f80f | |||
d46cb9c28b | |||
7dcf3d3a2e | |||
d442671275 | |||
213627c305 | |||
47ab9f6064 | |||
866a89d8ae | |||
b8df9e3610 | |||
d1d0b294d7 | |||
8a80cbda4a | |||
444173afd2 | |||
b6cdb6f7a7 | |||
f7106d0904 | |||
3f5e49662f | |||
6df02b1074 | |||
55298f7575 | |||
298f895bfe | |||
79d73cf09f | |||
3a027b6cd9 | |||
69d8151ac8 | |||
2db4188dbc | |||
2c9a80e363 | |||
d06c8da3bb | |||
e46a008bc5 | |||
31324c7e83 | |||
ed48901c92 | |||
7e3796d416 | |||
69da301de2 | |||
7f80ae45f0 | |||
dd1d86476c | |||
888f763bbe | |||
fcf456137f | |||
a5929c2d5e | |||
|
7a5fa0bb2e | ||
645cc1d7ca | |||
14666da73f | |||
90e690ffc2 | |||
69535b20d0 | |||
c0cfe8ba51 | |||
2d7f20a9b1 | |||
d08d0f338f | |||
825d93720a | |||
ed96e2ff66 | |||
de914ccedf | |||
db19041b96 | |||
5d13b48da6 | |||
f8b6b3e521 | |||
4e4920e782 | |||
ab38d4c71e | |||
ff1e6f4cf3 | |||
0e48c6f79b | |||
6ae8b68786 | |||
037fb7f1ae | |||
fd0e80f00c | |||
67b24641e2 | |||
2d42bbf464 | |||
e8bfd0af6d | |||
c3944edf43 | |||
090c06c403 | |||
eb91d40edf | |||
281247897b | |||
7637289c3e | |||
d30d9cf3a9 | |||
8365c176a6 | |||
7573f01ae3 | |||
74143e90ba | |||
27dfede802 | |||
6a12f1e3e5 | |||
6755099c36 | |||
fb34e556f7 | |||
d82728602b | |||
d50503a2f8 | |||
55f662f5d7 | |||
f2a3a967c7 | |||
c011f1d7f9 | |||
8926fd439e | |||
1376a7f898 | |||
b2ae14657d | |||
88c8643eb3 | |||
993f9cd91c | |||
9c403d0e18 | |||
316a388b79 | |||
0a1de2b967 | |||
70bd8dafa5 | |||
48fc41c4b8 | |||
bd72bbb1f3 | |||
9d7df078b0 | |||
812ad96a66 | |||
58949127d6 | |||
591f4c43e0 | |||
71978e2386 | |||
a8dddfbd30 | |||
c8cba54fe0 | |||
6d3e820bd1 | |||
eafb62aee9 | |||
a1e13775f7 | |||
827c90ab8a | |||
034172c7b3 | |||
1b2b51be88 | |||
c39fc940b9 | |||
edf931f827 | |||
2718e064cd | |||
298a15a656 | |||
10e44aa751 | |||
98d27b3145 | |||
47fbda5e06 | |||
17ff6d3e82 | |||
06429e0853 | |||
978bb783e3 | |||
9fd98c176a | |||
a4f9ca969c | |||
a580983c89 | |||
7c40549200 | |||
8361431754 | |||
26adee27e6 | |||
779d940849 | |||
ae07f82dd5 | |||
b2bd779de7 | |||
18a0ed5ce4 | |||
c84baf5152 | |||
06040ac649 | |||
1c072c454d | |||
1ba69e38ed | |||
5df8ae8edd | |||
c6524ff1d3 | |||
088638661a | |||
a3fd680ea6 | |||
94fa9acc44 | |||
b84120efe3 | |||
13ffb063c5 | |||
35eec03142 | |||
633ccac42d | |||
fb36dc83d5 | |||
a58a2cba41 | |||
26daedbd72 | |||
6a109f2a5a | |||
2f36f82363 | |||
db4037111f | |||
49089ff433 | |||
db82116103 | |||
bad00517a3 | |||
c3da8c067f | |||
4a6f49ac3b | |||
4dacca2d46 | |||
cbb6116a61 | |||
b603822679 | |||
3b249d62b9 | |||
6b97fed499 | |||
2d977b03a4 | |||
024ba8ee8f | |||
9e02196dd0 | |||
64dc7b5772 | |||
3834fe6a49 | |||
4bc8889d32 | |||
63ff325068 | |||
c18de40edd | |||
d04e7b22e4 | |||
f95de3457c | |||
1950cdaba0 | |||
e49ed1b7ad | |||
e5b3f03681 | |||
5ee53a493d | |||
e3ec2b8c2e | |||
8760662cf7 | |||
5be18af930 | |||
46cc57ac2d | |||
9f5c380b66 | |||
c2dc55c8ff | |||
e6f7ab003d | |||
cfdf4a3141 |
317 changed files with 5151 additions and 1373031 deletions
8
.envrc
Normal file
8
.envrc
Normal 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
|
|
@ -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 }}
|
||||
|
|
82
.gitea/workflows/zig-mach.yaml
Normal file
82
.gitea/workflows/zig-mach.yaml
Normal 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 }}
|
78
.gitea/workflows/zig-nightly.yaml
Normal file
78
.gitea/workflows/zig-nightly.yaml
Normal 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 }}
|
84
.gitea/workflows/zig-previous.yaml
Normal file
84
.gitea/workflows/zig-previous.yaml
Normal 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
20
.github/workflows/build.yaml
vendored
Normal 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
20
.github/workflows/zig-mach.yaml
vendored
Normal 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
20
.github/workflows/zig-nightly.yaml
vendored
Normal 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
20
.github/workflows/zig-previous.yaml
vendored
Normal 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
2
.gitignore
vendored
|
@ -10,3 +10,5 @@ smithy/zig-out/
|
|||
libs/
|
||||
src/git_version.zig
|
||||
zig-out
|
||||
core
|
||||
.zig-cache
|
||||
|
|
|
@ -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-----
|
36
CopyStep.zig
36
CopyStep.zig
|
@ -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);
|
||||
};
|
||||
}
|
219
GitRepoStep.zig
219
GitRepoStep.zig
|
@ -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
135
README.md
|
@ -1,14 +1,25 @@
|
|||
AWS SDK for Zig
|
||||
===============
|
||||
|
||||
[](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**
|
||||
[](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/):
|
||||
|
||||
[](https://git.lerch.org/lobo/aws-sdk-for-zig/actions?workflow=zig-mach.yaml&state=closed)
|
||||
|
||||
[Nightly Zig](https://ziglang.org/download/):
|
||||
|
||||
[](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):
|
||||
|
||||
[](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
|
||||
|
|
229
VersionStep.zig
229
VersionStep.zig
|
@ -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
308
build.zig
|
@ -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(©_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
24
build.zig.zon
Normal 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",
|
||||
},
|
||||
},
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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.
|
|
@ -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
11
codegen/build.zig.zon
Normal 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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
Loading…
Add table
Reference in a new issue