knievel 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +68 -68
  4. data/docs/AdLibraryApi.md +287 -0
  5. data/docs/AdsApi.md +357 -0
  6. data/docs/AdvertisersApi.md +357 -0
  7. data/docs/CampaignsApi.md +357 -0
  8. data/docs/CreativeTemplatesApi.md +287 -0
  9. data/docs/CreativesApi.md +287 -0
  10. data/docs/DecisionsApi.md +77 -0
  11. data/docs/ExplainApi.md +77 -0
  12. data/docs/FlightsApi.md +357 -0
  13. data/docs/OrgsApi.md +151 -0
  14. data/docs/SitesApi.md +427 -0
  15. data/docs/SystemApi.md +187 -0
  16. data/docs/TaxonomyApi.md +421 -0
  17. data/docs/TokensApi.md +214 -0
  18. data/docs/ZonesApi.md +357 -0
  19. data/lib/knievel/api/ad_library_api.rb +292 -0
  20. data/lib/knievel/api/ads_api.rb +362 -0
  21. data/lib/knievel/api/advertisers_api.rb +364 -0
  22. data/lib/knievel/api/campaigns_api.rb +362 -0
  23. data/lib/knievel/api/creative_templates_api.rb +294 -0
  24. data/lib/knievel/api/creatives_api.rb +295 -0
  25. data/lib/knievel/api/decisions_api.rb +92 -0
  26. data/lib/knievel/api/explain_api.rb +92 -0
  27. data/lib/knievel/api/flights_api.rb +362 -0
  28. data/lib/knievel/api/orgs_api.rb +164 -0
  29. data/lib/knievel/api/sites_api.rb +434 -0
  30. data/lib/knievel/api/system_api.rb +187 -0
  31. data/lib/knievel/api/taxonomy_api.rb +394 -0
  32. data/lib/knievel/api/tokens_api.rb +222 -0
  33. data/lib/knievel/api/zones_api.rb +362 -0
  34. data/lib/knievel/version.rb +1 -1
  35. data/lib/knievel.rb +15 -1
  36. data/spec/api/ad_library_api_spec.rb +79 -0
  37. data/spec/api/ads_api_spec.rb +90 -0
  38. data/spec/api/advertisers_api_spec.rb +91 -0
  39. data/spec/api/campaigns_api_spec.rb +90 -0
  40. data/spec/api/creative_templates_api_spec.rb +80 -0
  41. data/spec/api/creatives_api_spec.rb +80 -0
  42. data/spec/api/decisions_api_spec.rb +46 -0
  43. data/spec/api/explain_api_spec.rb +46 -0
  44. data/spec/api/flights_api_spec.rb +90 -0
  45. data/spec/api/orgs_api_spec.rb +60 -0
  46. data/spec/api/sites_api_spec.rb +102 -0
  47. data/spec/api/system_api_spec.rb +65 -0
  48. data/spec/api/taxonomy_api_spec.rb +98 -0
  49. data/spec/api/tokens_api_spec.rb +70 -0
  50. data/spec/api/zones_api_spec.rb +90 -0
  51. metadata +61 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e9fa25c231e70c3551342b77362e44a2ef0980a80350490d3226a404f0f4ad41
4
- data.tar.gz: c5f9a769117d7c07da78b46057f99d45d7fe430af3ab3e6560a7e7c186ee8cab
3
+ metadata.gz: f9d3518d6f9909350f26f983cb87e0fee6009ffdded99fd78bd03895d7f52ff1
4
+ data.tar.gz: 2aa153f6fc65c9eb6d0d618452be68f57c2e8f64fe5835c12387171349e0f344
5
5
  SHA512:
6
- metadata.gz: ff5b7e769f99509d6dcfe5a2404f4b256d1ba92de513f0d8d21d1f65810006189877cb594b05852d49c2ff0d39e38d54e84dfece7c31f392fcc6fb829605dd73
7
- data.tar.gz: 0f6e903d543cd4828c39fca351cfefee608476eedeadf924af7f97c4d7adc79394f58b64552801839ff673a253aa95f30e6b9e8a95cc1c73fac7991a59433e37
6
+ metadata.gz: 10fd434746a96d8eac6a134f6f60094862248d160a2852c8cd110ec3af4099097d0fe6471f700f411926743fab0c0fbdfb988081036e4838d60d9da42b4a5c37
7
+ data.tar.gz: 56522d1ed756bf64a7d59c9341143f42fc59a07042a08194a5504025ef87dfa20679301f8c55520182ad77d5e5e30c1ca7e1cb7bddc6e7e16c26bffef0da1d5d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- knievel (0.1.1)
4
+ knievel (0.1.2)
5
5
  faraday (>= 1.0.1, < 3.0)
6
6
  faraday-multipart
7
7
  marcel
data/README.md CHANGED
@@ -7,7 +7,7 @@ No description provided (generated by Openapi Generator https://github.com/opena
7
7
  This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
8
8
 
9
9
  - API version: 0.1.0
10
- - Package version: 0.1.1
10
+ - Package version: 0.1.2
11
11
  - Generator version: 7.23.0-SNAPSHOT
12
12
  - Build package: org.openapitools.codegen.languages.RubyClientCodegen
13
13
 
@@ -24,16 +24,16 @@ gem build knievel.gemspec
24
24
  Then either install the gem locally:
25
25
 
26
26
  ```shell
27
- gem install ./knievel-0.1.1.gem
27
+ gem install ./knievel-0.1.2.gem
28
28
  ```
29
29
 
30
- (for development, run `gem install --dev ./knievel-0.1.1.gem` to install the development dependencies)
30
+ (for development, run `gem install --dev ./knievel-0.1.2.gem` to install the development dependencies)
31
31
 
32
32
  or publish the gem to a gem hosting service, e.g. [RubyGems](https://rubygems.org/).
33
33
 
34
34
  Finally add this to the Gemfile:
35
35
 
36
- gem 'knievel', '~> 0.1.1'
36
+ gem 'knievel', '~> 0.1.2'
37
37
 
38
38
  ### Install from Git
39
39
 
@@ -67,15 +67,15 @@ Knievel.configure do |config|
67
67
  config.configure_faraday_connection { |connection| 'YOUR CONNECTION CONFIG PROC' }
68
68
  end
69
69
 
70
- api_instance = Knievel::DefaultApi.new
71
- project_id = 'project_id_example' # String |
72
- batch_upsert_ads_request = Knievel::BatchUpsertAdsRequest.new({items: [Knievel::BatchUpsertAdRow.new({external_id: 'external_id_example', flight_id: 3.56, creative_id: 3.56})]}) # BatchUpsertAdsRequest |
70
+ api_instance = Knievel::AdLibraryApi.new
71
+ org_id = 'org_id_example' # String |
72
+ create_ad_library_item_request = Knievel::CreateAdLibraryItemRequest.new({name: 'name_example', kind: 'kind_example'}) # CreateAdLibraryItemRequest |
73
73
 
74
74
  begin
75
- result = api_instance.batch_upsert_ads(project_id, batch_upsert_ads_request)
75
+ result = api_instance.create_ad_library_item(org_id, create_ad_library_item_request)
76
76
  p result
77
77
  rescue Knievel::ApiError => e
78
- puts "Exception when calling DefaultApi->batch_upsert_ads: #{e}"
78
+ puts "Exception when calling AdLibraryApi->create_ad_library_item: #{e}"
79
79
  end
80
80
 
81
81
  ```
@@ -86,65 +86,65 @@ All URIs are relative to *http://localhost*
86
86
 
87
87
  Class | Method | HTTP request | Description
88
88
  ------------ | ------------- | ------------- | -------------
89
- *Knievel::DefaultApi* | [**batch_upsert_ads**](docs/DefaultApi.md#batch_upsert_ads) | **POST** /v1/projects/{project_id}/ads:batchUpsert |
90
- *Knievel::DefaultApi* | [**batch_upsert_advertisers**](docs/DefaultApi.md#batch_upsert_advertisers) | **POST** /v1/projects/{project_id}/advertisers:batchUpsert | `POST /v1/projects/:project_id/advertisers:batchUpsert` bulk by `externalId`. Single Postgres transaction; per `API.md` \"Write contract\" any per-row failure rolls back the whole batch with `details[]` listing every offending row. On success: 200 with the upserted rows in input order.
91
- *Knievel::DefaultApi* | [**batch_upsert_campaigns**](docs/DefaultApi.md#batch_upsert_campaigns) | **POST** /v1/projects/{project_id}/campaigns:batchUpsert |
92
- *Knievel::DefaultApi* | [**batch_upsert_flights**](docs/DefaultApi.md#batch_upsert_flights) | **POST** /v1/projects/{project_id}/flights:batchUpsert |
93
- *Knievel::DefaultApi* | [**batch_upsert_sites**](docs/DefaultApi.md#batch_upsert_sites) | **POST** /v1/projects/{project_id}/sites:batchUpsert |
94
- *Knievel::DefaultApi* | [**batch_upsert_zones**](docs/DefaultApi.md#batch_upsert_zones) | **POST** /v1/projects/{project_id}/zones:batchUpsert |
95
- *Knievel::DefaultApi* | [**create_ad**](docs/DefaultApi.md#create_ad) | **POST** /v1/projects/{project_id}/ads |
96
- *Knievel::DefaultApi* | [**create_ad_library_item**](docs/DefaultApi.md#create_ad_library_item) | **POST** /v1/orgs/{org_id}/ad-library/items |
97
- *Knievel::DefaultApi* | [**create_advertiser**](docs/DefaultApi.md#create_advertiser) | **POST** /v1/projects/{project_id}/advertisers |
98
- *Knievel::DefaultApi* | [**create_campaign**](docs/DefaultApi.md#create_campaign) | **POST** /v1/projects/{project_id}/campaigns |
99
- *Knievel::DefaultApi* | [**create_creative**](docs/DefaultApi.md#create_creative) | **POST** /v1/projects/{project_id}/creatives |
100
- *Knievel::DefaultApi* | [**create_creative_template**](docs/DefaultApi.md#create_creative_template) | **POST** /v1/projects/{project_id}/creative-templates |
101
- *Knievel::DefaultApi* | [**create_flight**](docs/DefaultApi.md#create_flight) | **POST** /v1/projects/{project_id}/flights |
102
- *Knievel::DefaultApi* | [**create_project**](docs/DefaultApi.md#create_project) | **POST** /v1/orgs/{org_id}/projects | Create a project under an org. Honors `Idempotency-Key` (24 h replay window per `API.md` \"Idempotency\"); `409 idempotency_conflict` if the same key is reused with a different body. Returns `409 external_id_conflict` if the `externalId` is already taken in this org.
103
- *Knievel::DefaultApi* | [**create_site**](docs/DefaultApi.md#create_site) | **POST** /v1/projects/{project_id}/sites |
104
- *Knievel::DefaultApi* | [**create_token**](docs/DefaultApi.md#create_token) | **POST** /v1/orgs/{org_id}/tokens | Mint an opaque token. Returns the plaintext secret exactly once. Min role: org-admin.
105
- *Knievel::DefaultApi* | [**create_zone**](docs/DefaultApi.md#create_zone) | **POST** /v1/projects/{project_id}/zones |
106
- *Knievel::DefaultApi* | [**decisions**](docs/DefaultApi.md#decisions) | **POST** /v1/projects/{project_id}/decisions |
107
- *Knievel::DefaultApi* | [**decisions_explain**](docs/DefaultApi.md#decisions_explain) | **POST** /v1/projects/{project_id}/decisions:explain |
108
- *Knievel::DefaultApi* | [**get_ad**](docs/DefaultApi.md#get_ad) | **GET** /v1/projects/{project_id}/ads/{id} |
109
- *Knievel::DefaultApi* | [**get_ad_library_item**](docs/DefaultApi.md#get_ad_library_item) | **GET** /v1/orgs/{org_id}/ad-library/items/{item_id} |
110
- *Knievel::DefaultApi* | [**get_ad_type**](docs/DefaultApi.md#get_ad_type) | **GET** /v1/projects/{project_id}/ad-types/{id} |
111
- *Knievel::DefaultApi* | [**get_advertiser**](docs/DefaultApi.md#get_advertiser) | **GET** /v1/projects/{project_id}/advertisers/{id} |
112
- *Knievel::DefaultApi* | [**get_campaign**](docs/DefaultApi.md#get_campaign) | **GET** /v1/projects/{project_id}/campaigns/{id} |
113
- *Knievel::DefaultApi* | [**get_channel**](docs/DefaultApi.md#get_channel) | **GET** /v1/projects/{project_id}/channels/{id} |
114
- *Knievel::DefaultApi* | [**get_creative**](docs/DefaultApi.md#get_creative) | **GET** /v1/projects/{project_id}/creatives/{id} |
115
- *Knievel::DefaultApi* | [**get_creative_template**](docs/DefaultApi.md#get_creative_template) | **GET** /v1/projects/{project_id}/creative-templates/{id} |
116
- *Knievel::DefaultApi* | [**get_flight**](docs/DefaultApi.md#get_flight) | **GET** /v1/projects/{project_id}/flights/{id} |
117
- *Knievel::DefaultApi* | [**get_priority**](docs/DefaultApi.md#get_priority) | **GET** /v1/projects/{project_id}/priorities/{id} |
118
- *Knievel::DefaultApi* | [**get_project**](docs/DefaultApi.md#get_project) | **GET** /v1/orgs/{org_id}/projects/{project_id} | Read a single project by id (path).
119
- *Knievel::DefaultApi* | [**get_site**](docs/DefaultApi.md#get_site) | **GET** /v1/projects/{project_id}/sites/{id} |
120
- *Knievel::DefaultApi* | [**get_zone**](docs/DefaultApi.md#get_zone) | **GET** /v1/projects/{project_id}/zones/{id} |
121
- *Knievel::DefaultApi* | [**healthz**](docs/DefaultApi.md#healthz) | **GET** /healthz | Liveness — k8s liveness probe key.
122
- *Knievel::DefaultApi* | [**list_ad_library_items**](docs/DefaultApi.md#list_ad_library_items) | **GET** /v1/orgs/{org_id}/ad-library/items |
123
- *Knievel::DefaultApi* | [**list_ad_types**](docs/DefaultApi.md#list_ad_types) | **GET** /v1/projects/{project_id}/ad-types |
124
- *Knievel::DefaultApi* | [**list_ads**](docs/DefaultApi.md#list_ads) | **GET** /v1/projects/{project_id}/ads |
125
- *Knievel::DefaultApi* | [**list_advertisers**](docs/DefaultApi.md#list_advertisers) | **GET** /v1/projects/{project_id}/advertisers |
126
- *Knievel::DefaultApi* | [**list_campaigns**](docs/DefaultApi.md#list_campaigns) | **GET** /v1/projects/{project_id}/campaigns |
127
- *Knievel::DefaultApi* | [**list_channels**](docs/DefaultApi.md#list_channels) | **GET** /v1/projects/{project_id}/channels |
128
- *Knievel::DefaultApi* | [**list_creative_templates**](docs/DefaultApi.md#list_creative_templates) | **GET** /v1/projects/{project_id}/creative-templates |
129
- *Knievel::DefaultApi* | [**list_creatives**](docs/DefaultApi.md#list_creatives) | **GET** /v1/projects/{project_id}/creatives |
130
- *Knievel::DefaultApi* | [**list_flights**](docs/DefaultApi.md#list_flights) | **GET** /v1/projects/{project_id}/flights |
131
- *Knievel::DefaultApi* | [**list_priorities**](docs/DefaultApi.md#list_priorities) | **GET** /v1/projects/{project_id}/priorities |
132
- *Knievel::DefaultApi* | [**list_sites**](docs/DefaultApi.md#list_sites) | **GET** /v1/projects/{project_id}/sites |
133
- *Knievel::DefaultApi* | [**list_tokens**](docs/DefaultApi.md#list_tokens) | **GET** /v1/orgs/{org_id}/tokens | List tokens (metadata only; secrets never leave the mint response). Min role: org-admin.
134
- *Knievel::DefaultApi* | [**list_zones**](docs/DefaultApi.md#list_zones) | **GET** /v1/projects/{project_id}/zones |
135
- *Knievel::DefaultApi* | [**readyz**](docs/DefaultApi.md#readyz) | **GET** /readyz | Readiness — only 200 when knievel can serve. Per `REQUIREMENTS.md` § 10.6, the full check has four criteria; today only the DB-reachability one is real.
136
- *Knievel::DefaultApi* | [**revoke_token**](docs/DefaultApi.md#revoke_token) | **DELETE** /v1/orgs/{org_id}/tokens/{token_id} | Revoke a token (soft delete via `revoked_at`). The auth path filters revoked rows at the next request. Min role: org-admin.
137
- *Knievel::DefaultApi* | [**update_ad**](docs/DefaultApi.md#update_ad) | **PATCH** /v1/projects/{project_id}/ads/{id} |
138
- *Knievel::DefaultApi* | [**update_ad_library_item**](docs/DefaultApi.md#update_ad_library_item) | **PATCH** /v1/orgs/{org_id}/ad-library/items/{item_id} |
139
- *Knievel::DefaultApi* | [**update_advertiser**](docs/DefaultApi.md#update_advertiser) | **PATCH** /v1/projects/{project_id}/advertisers/{id} |
140
- *Knievel::DefaultApi* | [**update_campaign**](docs/DefaultApi.md#update_campaign) | **PATCH** /v1/projects/{project_id}/campaigns/{id} |
141
- *Knievel::DefaultApi* | [**update_creative_template**](docs/DefaultApi.md#update_creative_template) | **PATCH** /v1/projects/{project_id}/creative-templates/{id} | PATCH bumps `version` whenever the schema field is provided (per `API.md` § 3.6 — schema changes are versioned but do not retroactively re-validate existing creatives).
142
- *Knievel::DefaultApi* | [**update_flight**](docs/DefaultApi.md#update_flight) | **PATCH** /v1/projects/{project_id}/flights/{id} |
143
- *Knievel::DefaultApi* | [**update_site**](docs/DefaultApi.md#update_site) | **PATCH** /v1/projects/{project_id}/sites/{id} |
144
- *Knievel::DefaultApi* | [**update_zone**](docs/DefaultApi.md#update_zone) | **PATCH** /v1/projects/{project_id}/zones/{id} |
145
- *Knievel::DefaultApi* | [**upload_creative_image**](docs/DefaultApi.md#upload_creative_image) | **POST** /v1/projects/{project_id}/creatives/{id}/image | Multipart image upload (Phase 3.32). Validates the body against the `image_upload` core (size + magic bytes + MIME allow-list), writes through the configured `ImageStore`, and updates the creative row's `image_url` in the same transaction. Min role: editor (matches `createCreative`).
146
- *Knievel::DefaultApi* | [**upsert_site_by_url**](docs/DefaultApi.md#upsert_site_by_url) | **POST** /v1/projects/{project_id}/sites:upsertByUrl | Natural-key upsert. Returns the existing row (200) when a site with the same URL exists; otherwise creates (201). Per `API.md` § 3.7: `:upsertByUrl` is the canonical entry point for URL-driven flows.
147
- *Knievel::DefaultApi* | [**version**](docs/DefaultApi.md#version) | **GET** /version | Build metadata + effective auth policy.
89
+ *Knievel::AdLibraryApi* | [**create_ad_library_item**](docs/AdLibraryApi.md#create_ad_library_item) | **POST** /v1/orgs/{org_id}/ad-library/items |
90
+ *Knievel::AdLibraryApi* | [**get_ad_library_item**](docs/AdLibraryApi.md#get_ad_library_item) | **GET** /v1/orgs/{org_id}/ad-library/items/{item_id} |
91
+ *Knievel::AdLibraryApi* | [**list_ad_library_items**](docs/AdLibraryApi.md#list_ad_library_items) | **GET** /v1/orgs/{org_id}/ad-library/items |
92
+ *Knievel::AdLibraryApi* | [**update_ad_library_item**](docs/AdLibraryApi.md#update_ad_library_item) | **PATCH** /v1/orgs/{org_id}/ad-library/items/{item_id} |
93
+ *Knievel::AdsApi* | [**batch_upsert_ads**](docs/AdsApi.md#batch_upsert_ads) | **POST** /v1/projects/{project_id}/ads:batchUpsert |
94
+ *Knievel::AdsApi* | [**create_ad**](docs/AdsApi.md#create_ad) | **POST** /v1/projects/{project_id}/ads |
95
+ *Knievel::AdsApi* | [**get_ad**](docs/AdsApi.md#get_ad) | **GET** /v1/projects/{project_id}/ads/{id} |
96
+ *Knievel::AdsApi* | [**list_ads**](docs/AdsApi.md#list_ads) | **GET** /v1/projects/{project_id}/ads |
97
+ *Knievel::AdsApi* | [**update_ad**](docs/AdsApi.md#update_ad) | **PATCH** /v1/projects/{project_id}/ads/{id} |
98
+ *Knievel::AdvertisersApi* | [**batch_upsert_advertisers**](docs/AdvertisersApi.md#batch_upsert_advertisers) | **POST** /v1/projects/{project_id}/advertisers:batchUpsert | `POST /v1/projects/:project_id/advertisers:batchUpsert` — bulk by `externalId`. Single Postgres transaction; per `API.md` \"Write contract\" any per-row failure rolls back the whole batch with `details[]` listing every offending row. On success: 200 with the upserted rows in input order.
99
+ *Knievel::AdvertisersApi* | [**create_advertiser**](docs/AdvertisersApi.md#create_advertiser) | **POST** /v1/projects/{project_id}/advertisers |
100
+ *Knievel::AdvertisersApi* | [**get_advertiser**](docs/AdvertisersApi.md#get_advertiser) | **GET** /v1/projects/{project_id}/advertisers/{id} |
101
+ *Knievel::AdvertisersApi* | [**list_advertisers**](docs/AdvertisersApi.md#list_advertisers) | **GET** /v1/projects/{project_id}/advertisers |
102
+ *Knievel::AdvertisersApi* | [**update_advertiser**](docs/AdvertisersApi.md#update_advertiser) | **PATCH** /v1/projects/{project_id}/advertisers/{id} |
103
+ *Knievel::CampaignsApi* | [**batch_upsert_campaigns**](docs/CampaignsApi.md#batch_upsert_campaigns) | **POST** /v1/projects/{project_id}/campaigns:batchUpsert |
104
+ *Knievel::CampaignsApi* | [**create_campaign**](docs/CampaignsApi.md#create_campaign) | **POST** /v1/projects/{project_id}/campaigns |
105
+ *Knievel::CampaignsApi* | [**get_campaign**](docs/CampaignsApi.md#get_campaign) | **GET** /v1/projects/{project_id}/campaigns/{id} |
106
+ *Knievel::CampaignsApi* | [**list_campaigns**](docs/CampaignsApi.md#list_campaigns) | **GET** /v1/projects/{project_id}/campaigns |
107
+ *Knievel::CampaignsApi* | [**update_campaign**](docs/CampaignsApi.md#update_campaign) | **PATCH** /v1/projects/{project_id}/campaigns/{id} |
108
+ *Knievel::CreativeTemplatesApi* | [**create_creative_template**](docs/CreativeTemplatesApi.md#create_creative_template) | **POST** /v1/projects/{project_id}/creative-templates |
109
+ *Knievel::CreativeTemplatesApi* | [**get_creative_template**](docs/CreativeTemplatesApi.md#get_creative_template) | **GET** /v1/projects/{project_id}/creative-templates/{id} |
110
+ *Knievel::CreativeTemplatesApi* | [**list_creative_templates**](docs/CreativeTemplatesApi.md#list_creative_templates) | **GET** /v1/projects/{project_id}/creative-templates |
111
+ *Knievel::CreativeTemplatesApi* | [**update_creative_template**](docs/CreativeTemplatesApi.md#update_creative_template) | **PATCH** /v1/projects/{project_id}/creative-templates/{id} | PATCH bumps `version` whenever the schema field is provided (per `API.md` § 3.6 — schema changes are versioned but do not retroactively re-validate existing creatives).
112
+ *Knievel::CreativesApi* | [**create_creative**](docs/CreativesApi.md#create_creative) | **POST** /v1/projects/{project_id}/creatives |
113
+ *Knievel::CreativesApi* | [**get_creative**](docs/CreativesApi.md#get_creative) | **GET** /v1/projects/{project_id}/creatives/{id} |
114
+ *Knievel::CreativesApi* | [**list_creatives**](docs/CreativesApi.md#list_creatives) | **GET** /v1/projects/{project_id}/creatives |
115
+ *Knievel::CreativesApi* | [**upload_creative_image**](docs/CreativesApi.md#upload_creative_image) | **POST** /v1/projects/{project_id}/creatives/{id}/image | Multipart image upload (Phase 3.32). Validates the body against the `image_upload` core (size + magic bytes + MIME allow-list), writes through the configured `ImageStore`, and updates the creative row's `image_url` in the same transaction. Min role: editor (matches `createCreative`).
116
+ *Knievel::DecisionsApi* | [**decisions**](docs/DecisionsApi.md#decisions) | **POST** /v1/projects/{project_id}/decisions |
117
+ *Knievel::ExplainApi* | [**decisions_explain**](docs/ExplainApi.md#decisions_explain) | **POST** /v1/projects/{project_id}/decisions:explain |
118
+ *Knievel::FlightsApi* | [**batch_upsert_flights**](docs/FlightsApi.md#batch_upsert_flights) | **POST** /v1/projects/{project_id}/flights:batchUpsert |
119
+ *Knievel::FlightsApi* | [**create_flight**](docs/FlightsApi.md#create_flight) | **POST** /v1/projects/{project_id}/flights |
120
+ *Knievel::FlightsApi* | [**get_flight**](docs/FlightsApi.md#get_flight) | **GET** /v1/projects/{project_id}/flights/{id} |
121
+ *Knievel::FlightsApi* | [**list_flights**](docs/FlightsApi.md#list_flights) | **GET** /v1/projects/{project_id}/flights |
122
+ *Knievel::FlightsApi* | [**update_flight**](docs/FlightsApi.md#update_flight) | **PATCH** /v1/projects/{project_id}/flights/{id} |
123
+ *Knievel::OrgsApi* | [**create_project**](docs/OrgsApi.md#create_project) | **POST** /v1/orgs/{org_id}/projects | Create a project under an org. Honors `Idempotency-Key` (24 h replay window per `API.md` \"Idempotency\"); `409 idempotency_conflict` if the same key is reused with a different body. Returns `409 external_id_conflict` if the `externalId` is already taken in this org.
124
+ *Knievel::OrgsApi* | [**get_project**](docs/OrgsApi.md#get_project) | **GET** /v1/orgs/{org_id}/projects/{project_id} | Read a single project by id (path).
125
+ *Knievel::SitesApi* | [**batch_upsert_sites**](docs/SitesApi.md#batch_upsert_sites) | **POST** /v1/projects/{project_id}/sites:batchUpsert |
126
+ *Knievel::SitesApi* | [**create_site**](docs/SitesApi.md#create_site) | **POST** /v1/projects/{project_id}/sites |
127
+ *Knievel::SitesApi* | [**get_site**](docs/SitesApi.md#get_site) | **GET** /v1/projects/{project_id}/sites/{id} |
128
+ *Knievel::SitesApi* | [**list_sites**](docs/SitesApi.md#list_sites) | **GET** /v1/projects/{project_id}/sites |
129
+ *Knievel::SitesApi* | [**update_site**](docs/SitesApi.md#update_site) | **PATCH** /v1/projects/{project_id}/sites/{id} |
130
+ *Knievel::SitesApi* | [**upsert_site_by_url**](docs/SitesApi.md#upsert_site_by_url) | **POST** /v1/projects/{project_id}/sites:upsertByUrl | Natural-key upsert. Returns the existing row (200) when a site with the same URL exists; otherwise creates (201). Per `API.md` § 3.7: `:upsertByUrl` is the canonical entry point for URL-driven flows.
131
+ *Knievel::SystemApi* | [**healthz**](docs/SystemApi.md#healthz) | **GET** /healthz | Liveness — k8s liveness probe key.
132
+ *Knievel::SystemApi* | [**readyz**](docs/SystemApi.md#readyz) | **GET** /readyz | Readiness — only 200 when knievel can serve. Per `REQUIREMENTS.md` § 10.6, the full check has four criteria; today only the DB-reachability one is real.
133
+ *Knievel::SystemApi* | [**version**](docs/SystemApi.md#version) | **GET** /version | Build metadata + effective auth policy.
134
+ *Knievel::TaxonomyApi* | [**get_ad_type**](docs/TaxonomyApi.md#get_ad_type) | **GET** /v1/projects/{project_id}/ad-types/{id} |
135
+ *Knievel::TaxonomyApi* | [**get_channel**](docs/TaxonomyApi.md#get_channel) | **GET** /v1/projects/{project_id}/channels/{id} |
136
+ *Knievel::TaxonomyApi* | [**get_priority**](docs/TaxonomyApi.md#get_priority) | **GET** /v1/projects/{project_id}/priorities/{id} |
137
+ *Knievel::TaxonomyApi* | [**list_ad_types**](docs/TaxonomyApi.md#list_ad_types) | **GET** /v1/projects/{project_id}/ad-types |
138
+ *Knievel::TaxonomyApi* | [**list_channels**](docs/TaxonomyApi.md#list_channels) | **GET** /v1/projects/{project_id}/channels |
139
+ *Knievel::TaxonomyApi* | [**list_priorities**](docs/TaxonomyApi.md#list_priorities) | **GET** /v1/projects/{project_id}/priorities |
140
+ *Knievel::TokensApi* | [**create_token**](docs/TokensApi.md#create_token) | **POST** /v1/orgs/{org_id}/tokens | Mint an opaque token. Returns the plaintext secret exactly once. Min role: org-admin.
141
+ *Knievel::TokensApi* | [**list_tokens**](docs/TokensApi.md#list_tokens) | **GET** /v1/orgs/{org_id}/tokens | List tokens (metadata only; secrets never leave the mint response). Min role: org-admin.
142
+ *Knievel::TokensApi* | [**revoke_token**](docs/TokensApi.md#revoke_token) | **DELETE** /v1/orgs/{org_id}/tokens/{token_id} | Revoke a token (soft delete via `revoked_at`). The auth path filters revoked rows at the next request. Min role: org-admin.
143
+ *Knievel::ZonesApi* | [**batch_upsert_zones**](docs/ZonesApi.md#batch_upsert_zones) | **POST** /v1/projects/{project_id}/zones:batchUpsert |
144
+ *Knievel::ZonesApi* | [**create_zone**](docs/ZonesApi.md#create_zone) | **POST** /v1/projects/{project_id}/zones |
145
+ *Knievel::ZonesApi* | [**get_zone**](docs/ZonesApi.md#get_zone) | **GET** /v1/projects/{project_id}/zones/{id} |
146
+ *Knievel::ZonesApi* | [**list_zones**](docs/ZonesApi.md#list_zones) | **GET** /v1/projects/{project_id}/zones |
147
+ *Knievel::ZonesApi* | [**update_zone**](docs/ZonesApi.md#update_zone) | **PATCH** /v1/projects/{project_id}/zones/{id} |
148
148
 
149
149
 
150
150
  ## Documentation for Models
@@ -0,0 +1,287 @@
1
+ # Knievel::AdLibraryApi
2
+
3
+ All URIs are relative to *http://localhost*
4
+
5
+ | Method | HTTP request | Description |
6
+ | ------ | ------------ | ----------- |
7
+ | [**create_ad_library_item**](AdLibraryApi.md#create_ad_library_item) | **POST** /v1/orgs/{org_id}/ad-library/items | |
8
+ | [**get_ad_library_item**](AdLibraryApi.md#get_ad_library_item) | **GET** /v1/orgs/{org_id}/ad-library/items/{item_id} | |
9
+ | [**list_ad_library_items**](AdLibraryApi.md#list_ad_library_items) | **GET** /v1/orgs/{org_id}/ad-library/items | |
10
+ | [**update_ad_library_item**](AdLibraryApi.md#update_ad_library_item) | **PATCH** /v1/orgs/{org_id}/ad-library/items/{item_id} | |
11
+
12
+
13
+ ## create_ad_library_item
14
+
15
+ > <AdLibraryItem> create_ad_library_item(org_id, create_ad_library_item_request)
16
+
17
+
18
+
19
+ ### Examples
20
+
21
+ ```ruby
22
+ require 'time'
23
+ require 'knievel'
24
+ # setup authorization
25
+ Knievel.configure do |config|
26
+ # Configure Bearer authorization: BearerAuth
27
+ config.access_token = 'YOUR_BEARER_TOKEN'
28
+ end
29
+
30
+ api_instance = Knievel::AdLibraryApi.new
31
+ org_id = 'org_id_example' # String |
32
+ create_ad_library_item_request = Knievel::CreateAdLibraryItemRequest.new({name: 'name_example', kind: 'kind_example'}) # CreateAdLibraryItemRequest |
33
+
34
+ begin
35
+
36
+ result = api_instance.create_ad_library_item(org_id, create_ad_library_item_request)
37
+ p result
38
+ rescue Knievel::ApiError => e
39
+ puts "Error when calling AdLibraryApi->create_ad_library_item: #{e}"
40
+ end
41
+ ```
42
+
43
+ #### Using the create_ad_library_item_with_http_info variant
44
+
45
+ This returns an Array which contains the response data, status code and headers.
46
+
47
+ > <Array(<AdLibraryItem>, Integer, Hash)> create_ad_library_item_with_http_info(org_id, create_ad_library_item_request)
48
+
49
+ ```ruby
50
+ begin
51
+
52
+ data, status_code, headers = api_instance.create_ad_library_item_with_http_info(org_id, create_ad_library_item_request)
53
+ p status_code # => 2xx
54
+ p headers # => { ... }
55
+ p data # => <AdLibraryItem>
56
+ rescue Knievel::ApiError => e
57
+ puts "Error when calling AdLibraryApi->create_ad_library_item_with_http_info: #{e}"
58
+ end
59
+ ```
60
+
61
+ ### Parameters
62
+
63
+ | Name | Type | Description | Notes |
64
+ | ---- | ---- | ----------- | ----- |
65
+ | **org_id** | **String** | | |
66
+ | **create_ad_library_item_request** | [**CreateAdLibraryItemRequest**](CreateAdLibraryItemRequest.md) | | |
67
+
68
+ ### Return type
69
+
70
+ [**AdLibraryItem**](AdLibraryItem.md)
71
+
72
+ ### Authorization
73
+
74
+ [BearerAuth](../README.md#BearerAuth)
75
+
76
+ ### HTTP request headers
77
+
78
+ - **Content-Type**: application/json; charset=utf-8
79
+ - **Accept**: application/json; charset=utf-8
80
+
81
+
82
+ ## get_ad_library_item
83
+
84
+ > <AdLibraryItem> get_ad_library_item(org_id, item_id)
85
+
86
+
87
+
88
+ ### Examples
89
+
90
+ ```ruby
91
+ require 'time'
92
+ require 'knievel'
93
+ # setup authorization
94
+ Knievel.configure do |config|
95
+ # Configure Bearer authorization: BearerAuth
96
+ config.access_token = 'YOUR_BEARER_TOKEN'
97
+ end
98
+
99
+ api_instance = Knievel::AdLibraryApi.new
100
+ org_id = 'org_id_example' # String |
101
+ item_id = 'item_id_example' # String |
102
+
103
+ begin
104
+
105
+ result = api_instance.get_ad_library_item(org_id, item_id)
106
+ p result
107
+ rescue Knievel::ApiError => e
108
+ puts "Error when calling AdLibraryApi->get_ad_library_item: #{e}"
109
+ end
110
+ ```
111
+
112
+ #### Using the get_ad_library_item_with_http_info variant
113
+
114
+ This returns an Array which contains the response data, status code and headers.
115
+
116
+ > <Array(<AdLibraryItem>, Integer, Hash)> get_ad_library_item_with_http_info(org_id, item_id)
117
+
118
+ ```ruby
119
+ begin
120
+
121
+ data, status_code, headers = api_instance.get_ad_library_item_with_http_info(org_id, item_id)
122
+ p status_code # => 2xx
123
+ p headers # => { ... }
124
+ p data # => <AdLibraryItem>
125
+ rescue Knievel::ApiError => e
126
+ puts "Error when calling AdLibraryApi->get_ad_library_item_with_http_info: #{e}"
127
+ end
128
+ ```
129
+
130
+ ### Parameters
131
+
132
+ | Name | Type | Description | Notes |
133
+ | ---- | ---- | ----------- | ----- |
134
+ | **org_id** | **String** | | |
135
+ | **item_id** | **String** | | |
136
+
137
+ ### Return type
138
+
139
+ [**AdLibraryItem**](AdLibraryItem.md)
140
+
141
+ ### Authorization
142
+
143
+ [BearerAuth](../README.md#BearerAuth)
144
+
145
+ ### HTTP request headers
146
+
147
+ - **Content-Type**: Not defined
148
+ - **Accept**: application/json; charset=utf-8
149
+
150
+
151
+ ## list_ad_library_items
152
+
153
+ > <AdLibraryItemList> list_ad_library_items(org_id)
154
+
155
+
156
+
157
+ ### Examples
158
+
159
+ ```ruby
160
+ require 'time'
161
+ require 'knievel'
162
+ # setup authorization
163
+ Knievel.configure do |config|
164
+ # Configure Bearer authorization: BearerAuth
165
+ config.access_token = 'YOUR_BEARER_TOKEN'
166
+ end
167
+
168
+ api_instance = Knievel::AdLibraryApi.new
169
+ org_id = 'org_id_example' # String |
170
+
171
+ begin
172
+
173
+ result = api_instance.list_ad_library_items(org_id)
174
+ p result
175
+ rescue Knievel::ApiError => e
176
+ puts "Error when calling AdLibraryApi->list_ad_library_items: #{e}"
177
+ end
178
+ ```
179
+
180
+ #### Using the list_ad_library_items_with_http_info variant
181
+
182
+ This returns an Array which contains the response data, status code and headers.
183
+
184
+ > <Array(<AdLibraryItemList>, Integer, Hash)> list_ad_library_items_with_http_info(org_id)
185
+
186
+ ```ruby
187
+ begin
188
+
189
+ data, status_code, headers = api_instance.list_ad_library_items_with_http_info(org_id)
190
+ p status_code # => 2xx
191
+ p headers # => { ... }
192
+ p data # => <AdLibraryItemList>
193
+ rescue Knievel::ApiError => e
194
+ puts "Error when calling AdLibraryApi->list_ad_library_items_with_http_info: #{e}"
195
+ end
196
+ ```
197
+
198
+ ### Parameters
199
+
200
+ | Name | Type | Description | Notes |
201
+ | ---- | ---- | ----------- | ----- |
202
+ | **org_id** | **String** | | |
203
+
204
+ ### Return type
205
+
206
+ [**AdLibraryItemList**](AdLibraryItemList.md)
207
+
208
+ ### Authorization
209
+
210
+ [BearerAuth](../README.md#BearerAuth)
211
+
212
+ ### HTTP request headers
213
+
214
+ - **Content-Type**: Not defined
215
+ - **Accept**: application/json; charset=utf-8
216
+
217
+
218
+ ## update_ad_library_item
219
+
220
+ > <AdLibraryItem> update_ad_library_item(org_id, item_id, update_ad_library_item_request)
221
+
222
+
223
+
224
+ ### Examples
225
+
226
+ ```ruby
227
+ require 'time'
228
+ require 'knievel'
229
+ # setup authorization
230
+ Knievel.configure do |config|
231
+ # Configure Bearer authorization: BearerAuth
232
+ config.access_token = 'YOUR_BEARER_TOKEN'
233
+ end
234
+
235
+ api_instance = Knievel::AdLibraryApi.new
236
+ org_id = 'org_id_example' # String |
237
+ item_id = 'item_id_example' # String |
238
+ update_ad_library_item_request = Knievel::UpdateAdLibraryItemRequest.new # UpdateAdLibraryItemRequest |
239
+
240
+ begin
241
+
242
+ result = api_instance.update_ad_library_item(org_id, item_id, update_ad_library_item_request)
243
+ p result
244
+ rescue Knievel::ApiError => e
245
+ puts "Error when calling AdLibraryApi->update_ad_library_item: #{e}"
246
+ end
247
+ ```
248
+
249
+ #### Using the update_ad_library_item_with_http_info variant
250
+
251
+ This returns an Array which contains the response data, status code and headers.
252
+
253
+ > <Array(<AdLibraryItem>, Integer, Hash)> update_ad_library_item_with_http_info(org_id, item_id, update_ad_library_item_request)
254
+
255
+ ```ruby
256
+ begin
257
+
258
+ data, status_code, headers = api_instance.update_ad_library_item_with_http_info(org_id, item_id, update_ad_library_item_request)
259
+ p status_code # => 2xx
260
+ p headers # => { ... }
261
+ p data # => <AdLibraryItem>
262
+ rescue Knievel::ApiError => e
263
+ puts "Error when calling AdLibraryApi->update_ad_library_item_with_http_info: #{e}"
264
+ end
265
+ ```
266
+
267
+ ### Parameters
268
+
269
+ | Name | Type | Description | Notes |
270
+ | ---- | ---- | ----------- | ----- |
271
+ | **org_id** | **String** | | |
272
+ | **item_id** | **String** | | |
273
+ | **update_ad_library_item_request** | [**UpdateAdLibraryItemRequest**](UpdateAdLibraryItemRequest.md) | | |
274
+
275
+ ### Return type
276
+
277
+ [**AdLibraryItem**](AdLibraryItem.md)
278
+
279
+ ### Authorization
280
+
281
+ [BearerAuth](../README.md#BearerAuth)
282
+
283
+ ### HTTP request headers
284
+
285
+ - **Content-Type**: application/json; charset=utf-8
286
+ - **Accept**: application/json; charset=utf-8
287
+