growwer 1.0.2 → 1.1.0

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 (31) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -5
  3. data/docs/CatalogueApi.md +4 -4
  4. data/docs/CreateSellerMediaRequest.md +38 -0
  5. data/docs/CreateSellerMediaRequestPostOffer.md +24 -0
  6. data/docs/ManagedServicesApi.md +2 -2
  7. data/docs/ProjectCatalogueMediaAllOfProject.md +3 -1
  8. data/docs/ProjectCatalogueMediaAllOfProjectAiKeywords.md +20 -0
  9. data/docs/SellerMedia.md +2 -0
  10. data/docs/SellerMediaPostOffer.md +7 -1
  11. data/docs/SellerMediasApi.md +148 -5
  12. data/docs/UpdateSellerMediaRequest.md +2 -0
  13. data/docs/UpdateSellerMediaRequestPostOffer.md +8 -2
  14. data/lib/growwer/api/catalogue_api.rb +4 -4
  15. data/lib/growwer/api/managed_services_api.rb +4 -4
  16. data/lib/growwer/api/seller_medias_api.rb +157 -4
  17. data/lib/growwer/api_client.rb +1 -1
  18. data/lib/growwer/models/create_seller_media_request.rb +447 -0
  19. data/lib/growwer/models/create_seller_media_request_post_offer.rb +273 -0
  20. data/lib/growwer/models/project_catalogue_media_all_of_project.rb +34 -5
  21. data/lib/growwer/models/project_catalogue_media_all_of_project_ai_keywords.rb +211 -0
  22. data/lib/growwer/models/seller_media.rb +29 -1
  23. data/lib/growwer/models/seller_media_post_offer.rb +99 -1
  24. data/lib/growwer/models/update_seller_media_request.rb +44 -1
  25. data/lib/growwer/models/update_seller_media_request_post_offer.rb +96 -12
  26. data/lib/growwer/version.rb +1 -1
  27. data/lib/growwer.rb +3 -0
  28. data/spec/models/create_seller_media_request_post_offer_spec.rb +62 -0
  29. data/spec/models/create_seller_media_request_spec.rb +100 -0
  30. data/spec/models/project_catalogue_media_all_of_project_ai_keywords_spec.rb +46 -0
  31. metadata +14 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae94a4a42d430f85da4acd6056bb4ec98052e77633a0a4bc3d3c167044baeabe
4
- data.tar.gz: a04ef0cf407e8d2ead37c41b485bdd04d7518c1b58653d93270032fef77938e2
3
+ metadata.gz: 265b1f88501020d4206a96dbb6cb3e3bde56fd7be6ca618e6b14bec0cbda47b8
4
+ data.tar.gz: 7dd5decdd83bc86ff60777940b4ec890b3db3e27dd931ea72ebf19e60375434d
5
5
  SHA512:
6
- metadata.gz: bdfe61d545e913011bba9c129be9a033fc6ba9a247c0cd594d0e711d1bb632e1be2e7936e7c00a90c466225f8d3df227d47740da549c293596d6af2eb3319553
7
- data.tar.gz: cc335b05d428ea0470773481fa1e29e315ca66bfc1c0ad914c77ccc1a2ebb6e690720c8359dbb39bb10de82226d99db73f52fdd6b004d6c15edf767c6a39366d
6
+ metadata.gz: 78c6e830bae0347b2a212d01cd9ae3b371add5958d699e42be50f49ae1202d80e1792db23867780cfb24f555191694f867bc85f7ed9e28624da9e224d118a585
7
+ data.tar.gz: 6fb8c9e1babd458974b702bd0c67301ee3ca2eebf10a8828725a0f5f1c06e582a93f01a13646c4d37ea3783f6136458ffa688512ffa43298907d82ffc445f93c
data/README.md CHANGED
@@ -33,7 +33,7 @@ currency code and dates are ISO-8601.
33
33
  This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
34
34
 
35
35
  - API version: 1
36
- - Package version: 1.0.2
36
+ - Package version: 1.1.0
37
37
  - Generator version: 7.24.0
38
38
  - Build package: org.openapitools.codegen.languages.RubyClientCodegen
39
39
  For more information, please visit [https://growwer.com/contact/](https://growwer.com/contact/)
@@ -51,16 +51,16 @@ gem build growwer.gemspec
51
51
  Then either install the gem locally:
52
52
 
53
53
  ```shell
54
- gem install ./growwer-1.0.2.gem
54
+ gem install ./growwer-1.1.0.gem
55
55
  ```
56
56
 
57
- (for development, run `gem install --dev ./growwer-1.0.2.gem` to install the development dependencies)
57
+ (for development, run `gem install --dev ./growwer-1.1.0.gem` to install the development dependencies)
58
58
 
59
59
  or publish the gem to a gem hosting service, e.g. [RubyGems](https://rubygems.org/).
60
60
 
61
61
  Finally add this to the Gemfile:
62
62
 
63
- gem 'growwer', '~> 1.0.2'
63
+ gem 'growwer', '~> 1.1.0'
64
64
 
65
65
  ### Install from Git
66
66
 
@@ -158,9 +158,11 @@ Class | Method | HTTP request | Description
158
158
  *Growwer::SavedFiltersApi* | [**list_saved_filters**](docs/SavedFiltersApi.md#list_saved_filters) | **GET** /api/v1/projects/{id}/saved-filters | List the saved filters of a project
159
159
  *Growwer::SellerAccountApi* | [**put_seller_holiday**](docs/SellerAccountApi.md#put_seller_holiday) | **PUT** /api/v1/seller/holiday | Set your holiday
160
160
  *Growwer::SellerMediasApi* | [**apply_seller_media_competitive_fees**](docs/SellerMediasApi.md#apply_seller_media_competitive_fees) | **POST** /api/v1/seller/medias/{id}/apply-competitive-fees | Set the competitive fees Growwer suggests
161
+ *Growwer::SellerMediasApi* | [**create_seller_media**](docs/SellerMediasApi.md#create_seller_media) | **POST** /api/v1/seller/medias | Register a media you sell on
162
+ *Growwer::SellerMediasApi* | [**delete_seller_media**](docs/SellerMediasApi.md#delete_seller_media) | **DELETE** /api/v1/seller/medias/{id} | Delete a media you sell on
161
163
  *Growwer::SellerMediasApi* | [**get_seller_media**](docs/SellerMediasApi.md#get_seller_media) | **GET** /api/v1/seller/medias/{id} | Get a media you sell on
162
164
  *Growwer::SellerMediasApi* | [**list_seller_medias**](docs/SellerMediasApi.md#list_seller_medias) | **GET** /api/v1/seller/medias | List the medias you sell on
163
- *Growwer::SellerMediasApi* | [**update_seller_media**](docs/SellerMediasApi.md#update_seller_media) | **PATCH** /api/v1/seller/medias/{id} | Edit the fees of a media you sell on
165
+ *Growwer::SellerMediasApi* | [**update_seller_media**](docs/SellerMediasApi.md#update_seller_media) | **PATCH** /api/v1/seller/medias/{id} | Edit the offer of a media you sell on
164
166
  *Growwer::SellerOrdersApi* | [**accept_seller_order**](docs/SellerOrdersApi.md#accept_seller_order) | **POST** /api/v1/seller/orders/{id}/accept | Accept an order
165
167
  *Growwer::SellerOrdersApi* | [**deliver_seller_order**](docs/SellerOrdersApi.md#deliver_seller_order) | **POST** /api/v1/seller/orders/{id}/deliver | Deliver an order
166
168
  *Growwer::SellerOrdersApi* | [**deliver_seller_order_draft**](docs/SellerOrdersApi.md#deliver_seller_order_draft) | **POST** /api/v1/seller/orders/{id}/deliver-draft | Deliver a draft
@@ -195,6 +197,8 @@ Class | Method | HTTP request | Description
195
197
  - [Growwer::CountSavedFilterMedias200Response](docs/CountSavedFilterMedias200Response.md)
196
198
  - [Growwer::CreateProjectRequest](docs/CreateProjectRequest.md)
197
199
  - [Growwer::CreateSavedFilterRequest](docs/CreateSavedFilterRequest.md)
200
+ - [Growwer::CreateSellerMediaRequest](docs/CreateSellerMediaRequest.md)
201
+ - [Growwer::CreateSellerMediaRequestPostOffer](docs/CreateSellerMediaRequestPostOffer.md)
198
202
  - [Growwer::Error](docs/Error.md)
199
203
  - [Growwer::GetBuyerWallet200Response](docs/GetBuyerWallet200Response.md)
200
204
  - [Growwer::GetMe200Response](docs/GetMe200Response.md)
@@ -258,6 +262,7 @@ Class | Method | HTTP request | Description
258
262
  - [Growwer::Project](docs/Project.md)
259
263
  - [Growwer::ProjectCatalogueMedia](docs/ProjectCatalogueMedia.md)
260
264
  - [Growwer::ProjectCatalogueMediaAllOfProject](docs/ProjectCatalogueMediaAllOfProject.md)
265
+ - [Growwer::ProjectCatalogueMediaAllOfProjectAiKeywords](docs/ProjectCatalogueMediaAllOfProjectAiKeywords.md)
261
266
  - [Growwer::PutSellerHoliday200Response](docs/PutSellerHoliday200Response.md)
262
267
  - [Growwer::PutSellerHolidayRequest](docs/PutSellerHolidayRequest.md)
263
268
  - [Growwer::RequestMedias201Response](docs/RequestMedias201Response.md)
data/docs/CatalogueApi.md CHANGED
@@ -281,7 +281,7 @@ opts = {
281
281
  discarded: true, # Boolean | `true`: only the medias you discarded for the project; `false`: leave them out.
282
282
  new: true, # Boolean | Medias Growwer matched with the project recently. Only `true` applies it; omit it otherwise.
283
283
  ranks_goal_keyword: 'ranks_goal_keyword_example', # String | A comma-separated list of keyword origins: medias that rank for a keyword of the project from any of them. `user`: your keywords; `publicGenerated`: keywords Growwer found for the project.
284
- ranks_ai_keyword: 'ranks_ai_keyword_example', # String | A comma-separated list of AI answer engines: medias cited for a keyword of the project by any of them. `googleAiOverview`, `chatgpt`, `googleAiMode`.
284
+ ranks_ai_keyword: 'ranks_ai_keyword_example', # String | A comma-separated list of AI answer engines: medias the web lists an AI keyword of the project for, from any of them. `googleAiOverview`, `chatgpt`, `googleAiMode`.
285
285
  limit: 56, # Integer | Medias per page, 1 to 100.
286
286
  offset: 56 # Integer | Medias to skip, at most 99900.
287
287
  }
@@ -350,7 +350,7 @@ end
350
350
  | **discarded** | **Boolean** | `true`: only the medias you discarded for the project; `false`: leave them out. | [optional] |
351
351
  | **new** | **Boolean** | Medias Growwer matched with the project recently. Only `true` applies it; omit it otherwise. | [optional] |
352
352
  | **ranks_goal_keyword** | **String** | A comma-separated list of keyword origins: medias that rank for a keyword of the project from any of them. `user`: your keywords; `publicGenerated`: keywords Growwer found for the project. | [optional] |
353
- | **ranks_ai_keyword** | **String** | A comma-separated list of AI answer engines: medias cited for a keyword of the project by any of them. `googleAiOverview`, `chatgpt`, `googleAiMode`. | [optional] |
353
+ | **ranks_ai_keyword** | **String** | A comma-separated list of AI answer engines: medias the web lists an AI keyword of the project for, from any of them. `googleAiOverview`, `chatgpt`, `googleAiMode`. | [optional] |
354
354
  | **limit** | **Integer** | Medias per page, 1 to 100. | [optional][default to 20] |
355
355
  | **offset** | **Integer** | Medias to skip, at most 99900. | [optional][default to 0] |
356
356
 
@@ -497,7 +497,7 @@ opts = {
497
497
  discarded: true, # Boolean | `true`: only the medias you discarded for the project; `false`: leave them out.
498
498
  new: true, # Boolean | Medias Growwer matched with the project recently. Only `true` applies it; omit it otherwise.
499
499
  ranks_goal_keyword: 'ranks_goal_keyword_example', # String | A comma-separated list of keyword origins: medias that rank for a keyword of the project from any of them. `user`: your keywords; `publicGenerated`: keywords Growwer found for the project.
500
- ranks_ai_keyword: 'ranks_ai_keyword_example', # String | A comma-separated list of AI answer engines: medias cited for a keyword of the project by any of them. `googleAiOverview`, `chatgpt`, `googleAiMode`.
500
+ ranks_ai_keyword: 'ranks_ai_keyword_example', # String | A comma-separated list of AI answer engines: medias the web lists an AI keyword of the project for, from any of them. `googleAiOverview`, `chatgpt`, `googleAiMode`.
501
501
  limit: 56, # Integer | Medias per page, 1 to 100.
502
502
  offset: 56 # Integer | Medias to skip, at most 99900.
503
503
  }
@@ -568,7 +568,7 @@ end
568
568
  | **discarded** | **Boolean** | `true`: only the medias you discarded for the project; `false`: leave them out. | [optional] |
569
569
  | **new** | **Boolean** | Medias Growwer matched with the project recently. Only `true` applies it; omit it otherwise. | [optional] |
570
570
  | **ranks_goal_keyword** | **String** | A comma-separated list of keyword origins: medias that rank for a keyword of the project from any of them. `user`: your keywords; `publicGenerated`: keywords Growwer found for the project. | [optional] |
571
- | **ranks_ai_keyword** | **String** | A comma-separated list of AI answer engines: medias cited for a keyword of the project by any of them. `googleAiOverview`, `chatgpt`, `googleAiMode`. | [optional] |
571
+ | **ranks_ai_keyword** | **String** | A comma-separated list of AI answer engines: medias the web lists an AI keyword of the project for, from any of them. `googleAiOverview`, `chatgpt`, `googleAiMode`. | [optional] |
572
572
  | **limit** | **Integer** | Medias per page, 1 to 100. | [optional][default to 20] |
573
573
  | **offset** | **Integer** | Medias to skip, at most 99900. | [optional][default to 0] |
574
574
 
@@ -0,0 +1,38 @@
1
+ # Growwer::CreateSellerMediaRequest
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **root_url** | **String** | | |
8
+ | **typology** | **String** | | |
9
+ | **country** | **String** | A country code from GET /vocabulary. | |
10
+ | **language** | **String** | A language code from GET /vocabulary. | |
11
+ | **topics** | **Array<Integer>** | Topic ids from GET /vocabulary. | |
12
+ | **banned_topics** | **Array<Integer>** | The topic ids from GET /vocabulary the media refuses. | [optional] |
13
+ | **post_offer** | [**CreateSellerMediaRequestPostOffer**](CreateSellerMediaRequestPostOffer.md) | | |
14
+ | **link_addition_offer** | [**UpdateSellerMediaRequestLinkAdditionOffer**](UpdateSellerMediaRequestLinkAdditionOffer.md) | | [optional] |
15
+ | **extra_services** | [**Array<UpdateSellerMediaRequestExtraServicesInner>**](UpdateSellerMediaRequestExtraServicesInner.md) | | [optional] |
16
+ | **accept_media_publishing_terms** | **Boolean** | Must be true: you accept the media publishing terms. | |
17
+ | **declare_media_ownership** | **Boolean** | Must be true: you own or manage this media. | |
18
+
19
+ ## Example
20
+
21
+ ```ruby
22
+ require 'growwer'
23
+
24
+ instance = Growwer::CreateSellerMediaRequest.new(
25
+ root_url: https://www.example.com,
26
+ typology: null,
27
+ country: ES,
28
+ language: es,
29
+ topics: null,
30
+ banned_topics: null,
31
+ post_offer: null,
32
+ link_addition_offer: null,
33
+ extra_services: null,
34
+ accept_media_publishing_terms: null,
35
+ declare_media_ownership: null
36
+ )
37
+ ```
38
+
@@ -0,0 +1,24 @@
1
+ # Growwer::CreateSellerMediaRequestPostOffer
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **pricing_options** | [**Array<UpdateSellerMediaRequestPostOfferPricingOptionsInner>**](UpdateSellerMediaRequestPostOfferPricingOptionsInner.md) | | |
8
+ | **maximum_links** | **Integer** | | |
9
+ | **advertising_labelling_policy** | **String** | | [optional] |
10
+ | **promoted_social_networks** | **Array<String>** | | [optional] |
11
+
12
+ ## Example
13
+
14
+ ```ruby
15
+ require 'growwer'
16
+
17
+ instance = Growwer::CreateSellerMediaRequestPostOffer.new(
18
+ pricing_options: null,
19
+ maximum_links: null,
20
+ advertising_labelling_policy: null,
21
+ promoted_social_networks: null
22
+ )
23
+ ```
24
+
@@ -383,7 +383,7 @@ end
383
383
 
384
384
  Request a new campaign
385
385
 
386
- Asks your account manager for a new campaign, as the managed service page does: the team emails you to agree on it. For accounts with a managed service (GET /me `managedService.active`); without one, POST /managed-service/info-requests asks about the service. You may send 5 such requests per UTC day through the API. Past them it answers 429 `managed_service_request_limit_reached`, with `Retry-After` the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
386
+ Asks your account manager for a new campaign, as the managed service page does: the team emails you to agree on it. For accounts with a managed service (GET /me `managedService.active`); without one, POST /managed-service/info-requests asks about the service. The API admits a limited number of such requests per user and UTC day (5 by default; the refusal message states the current limit). Past it, it answers 429 `managed_service_request_limit_reached`, with `Retry-After` the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
387
387
 
388
388
  ### Examples
389
389
 
@@ -454,7 +454,7 @@ end
454
454
 
455
455
  Ask about the managed service
456
456
 
457
- Asks the team about the managed service for your website, as the managed service landing page does: the team contacts you. For accounts without a managed service (GET /me `managedService.active`); with one, POST /managed-service/campaign-requests requests a new campaign. You may send 5 such requests per UTC day through the API. Past them it answers 429 `managed_service_request_limit_reached`, with `Retry-After` the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
457
+ Asks the team about the managed service for your website, as the managed service landing page does: the team contacts you. For accounts without a managed service (GET /me `managedService.active`); with one, POST /managed-service/campaign-requests requests a new campaign. The API admits a limited number of such requests per user and UTC day (5 by default; the refusal message states the current limit). Past it, it answers 429 `managed_service_request_limit_reached`, with `Retry-After` the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
458
458
 
459
459
  ### Examples
460
460
 
@@ -10,6 +10,7 @@
10
10
  | **recommended** | **Boolean** | Growwer recommends the media for the project. | |
11
11
  | **bought** | **Boolean** | You have ordered on the media for the project. | |
12
12
  | **new** | **Boolean** | Growwer matched the media with the project recently. | |
13
+ | **ai_keywords** | [**Array<ProjectCatalogueMediaAllOfProjectAiKeywords>**](ProjectCatalogueMediaAllOfProjectAiKeywords.md) | The AI keywords the web lists for the media in this project, one entry per keyword of each stored source, empty when there are none. Keywords an AI answer gave without referencing any domain may be listed for every media of the project, so an entry does not mean that the engine cited the media. Entries keep their order within an engine, and a keyword listed by two engines appears once for each; the order of the engines is not promised. | |
13
14
 
14
15
  ## Example
15
16
 
@@ -22,7 +23,8 @@ instance = Growwer::ProjectCatalogueMediaAllOfProject.new(
22
23
  requested: null,
23
24
  recommended: null,
24
25
  bought: null,
25
- new: null
26
+ new: null,
27
+ ai_keywords: null
26
28
  )
27
29
  ```
28
30
 
@@ -0,0 +1,20 @@
1
+ # Growwer::ProjectCatalogueMediaAllOfProjectAiKeywords
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **keyword** | **String** | | |
8
+ | **source** | **String** | The AI engine that gave the keyword, as the `ranksAiKeyword` filter names it, or null for an engine it does not name. It is never where the media comes from. | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'growwer'
14
+
15
+ instance = Growwer::ProjectCatalogueMediaAllOfProjectAiKeywords.new(
16
+ keyword: null,
17
+ source: null
18
+ )
19
+ ```
20
+
data/docs/SellerMedia.md CHANGED
@@ -7,6 +7,7 @@
7
7
  | **id** | **String** | | |
8
8
  | **domain** | **String** | | |
9
9
  | **url** | **String** | The media's root URL. | |
10
+ | **typology** | **String** | | |
10
11
  | **state** | **String** | | |
11
12
  | **deactivation_strikes** | **Integer** | How many times the media was deactivated for not publishing. | |
12
13
  | **country** | **String** | A country code, as in GET /vocabulary, or null for none. | |
@@ -33,6 +34,7 @@ instance = Growwer::SellerMedia.new(
33
34
  id: null,
34
35
  domain: example.com,
35
36
  url: null,
37
+ typology: null,
36
38
  state: null,
37
39
  deactivation_strikes: null,
38
40
  country: null,
@@ -5,7 +5,10 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **pricing_options** | [**Array<SellerMediaPostOfferPricingOptionsInner>**](SellerMediaPostOfferPricingOptionsInner.md) | One entry per link type you offer. | |
8
- | **extra_services** | [**Array<UpdateSellerMediaRequestExtraServicesInner>**](UpdateSellerMediaRequestExtraServicesInner.md) | | |
8
+ | **maximum_links** | **Integer** | How many links a sponsored post may hold, 1 to 4. | |
9
+ | **advertising_labelling_policy** | **String** | Whether sponsored posts are labelled as advertising. | |
10
+ | **promoted_social_networks** | **Array<String>** | The social networks sponsored posts are promoted on. | |
11
+ | **extra_services** | [**Array<UpdateSellerMediaRequestExtraServicesInner>**](UpdateSellerMediaRequestExtraServicesInner.md) | Read here, but PATCH /seller/medias/{id} and POST /seller/medias take it at the top level of the body. | |
9
12
 
10
13
  ## Example
11
14
 
@@ -14,6 +17,9 @@ require 'growwer'
14
17
 
15
18
  instance = Growwer::SellerMediaPostOffer.new(
16
19
  pricing_options: null,
20
+ maximum_links: null,
21
+ advertising_labelling_policy: null,
22
+ promoted_social_networks: null,
17
23
  extra_services: null
18
24
  )
19
25
  ```
@@ -5,9 +5,11 @@ All URIs are relative to *https://tool.growwer.com*
5
5
  | Method | HTTP request | Description |
6
6
  | ------ | ------------ | ----------- |
7
7
  | [**apply_seller_media_competitive_fees**](SellerMediasApi.md#apply_seller_media_competitive_fees) | **POST** /api/v1/seller/medias/{id}/apply-competitive-fees | Set the competitive fees Growwer suggests |
8
+ | [**create_seller_media**](SellerMediasApi.md#create_seller_media) | **POST** /api/v1/seller/medias | Register a media you sell on |
9
+ | [**delete_seller_media**](SellerMediasApi.md#delete_seller_media) | **DELETE** /api/v1/seller/medias/{id} | Delete a media you sell on |
8
10
  | [**get_seller_media**](SellerMediasApi.md#get_seller_media) | **GET** /api/v1/seller/medias/{id} | Get a media you sell on |
9
11
  | [**list_seller_medias**](SellerMediasApi.md#list_seller_medias) | **GET** /api/v1/seller/medias | List the medias you sell on |
10
- | [**update_seller_media**](SellerMediasApi.md#update_seller_media) | **PATCH** /api/v1/seller/medias/{id} | Edit the fees of a media you sell on |
12
+ | [**update_seller_media**](SellerMediasApi.md#update_seller_media) | **PATCH** /api/v1/seller/medias/{id} | Edit the offer of a media you sell on |
11
13
 
12
14
 
13
15
  ## apply_seller_media_competitive_fees
@@ -81,6 +83,147 @@ end
81
83
  - **Accept**: application/json
82
84
 
83
85
 
86
+ ## create_seller_media
87
+
88
+ > <SellerMedia> create_seller_media(idempotency_key, create_seller_media_request)
89
+
90
+ Register a media you sell on
91
+
92
+ Registers one of your medias, as the media create page does. The media is created with `state: pending_review` and Growwer reviews it in the background, as for a media registered on the web; GET /seller/medias/{id} shows its state. - `rootUrl` is the media's root URL; `typology` is `blog` or `press`. - `country` and `language` take the codes GET /vocabulary publishes; `topics` and `bannedTopics` take its topic ids, at most 100 each, and no topic may be both; `bannedTopics` left out bans none. - `postOffer.pricingOptions` lists every link type you offer for sponsored posts, at least one. Each option needs at least one fee, and every option must offer the same sides (written by you, written by the buyer or Growwer), as the page requires. Each fee is at least 1 EUR, sent in cents. - `postOffer.maximumLinks` is how many links a sponsored post may hold, 1 to 4; `postOffer.advertisingLabellingPolicy` whether posts are labelled as advertising, `never` when left out; `postOffer.promotedSocialNetworks` the social networks posts are promoted on, none when left out. - `linkAdditionOffer.pricingOptions` lists the link types you offer for adding a link to an existing article; left out, `null` or an empty list offers none. - `extraServices` lists the extra services you offer, none when left out. It is sent at the top level, although GET /seller/medias/{id} reads it inside `postOffer`. - `acceptMediaPublishingTerms` and `declareMediaOwnership` must be `true`: they accept the media publishing terms and declare that you own or manage the media, as the page's checkboxes do, and are recorded as your consents for the media. A media registered already, by you or by anyone else, is refused with 409 `media_already_registered`, and each such refusal counts toward a daily limit of refusals (429 `media_duplicate_limit_reached` once reached); medias not registered yet are never limited by it. To register many medias, call this operation once per media, each call with its own `Idempotency-Key` and its own answer (201, 409, 422 or 429); there is no batch operation. The request limits apply to the loop as to any calls (600 requests per minute per user and 300 per key), and each 409 `media_already_registered` counts toward the daily limit of refusals as it does for a single call. Retry a call that got no answer with its same `Idempotency-Key`, as for any write.
93
+
94
+ ### Examples
95
+
96
+ ```ruby
97
+ require 'time'
98
+ require 'growwer'
99
+ # setup authorization
100
+ Growwer.configure do |config|
101
+ # Configure Bearer authorization: apiKey
102
+ config.access_token = 'YOUR_BEARER_TOKEN'
103
+ end
104
+
105
+ api_instance = Growwer::SellerMediasApi.new
106
+ idempotency_key = 'idempotency_key_example' # String | A new key for each write, reused only to retry that same write. 1 to 255 printable ASCII characters without spaces (`!` to `~`); any other value answers 400 `invalid_idempotency_key`.
107
+ create_seller_media_request = Growwer::CreateSellerMediaRequest.new({root_url: 'https://www.example.com', typology: 'blog', country: 'ES', language: 'es', topics: [37], post_offer: Growwer::CreateSellerMediaRequestPostOffer.new({pricing_options: [Growwer::UpdateSellerMediaRequestPostOfferPricingOptionsInner.new({link_type: 'dofollow'})], maximum_links: 37}), accept_media_publishing_terms: false, declare_media_ownership: false}) # CreateSellerMediaRequest |
108
+
109
+ begin
110
+ # Register a media you sell on
111
+ result = api_instance.create_seller_media(idempotency_key, create_seller_media_request)
112
+ p result
113
+ rescue Growwer::ApiError => e
114
+ puts "Error when calling SellerMediasApi->create_seller_media: #{e}"
115
+ end
116
+ ```
117
+
118
+ #### Using the create_seller_media_with_http_info variant
119
+
120
+ This returns an Array which contains the response data, status code and headers.
121
+
122
+ > <Array(<SellerMedia>, Integer, Hash)> create_seller_media_with_http_info(idempotency_key, create_seller_media_request)
123
+
124
+ ```ruby
125
+ begin
126
+ # Register a media you sell on
127
+ data, status_code, headers = api_instance.create_seller_media_with_http_info(idempotency_key, create_seller_media_request)
128
+ p status_code # => 2xx
129
+ p headers # => { ... }
130
+ p data # => <SellerMedia>
131
+ rescue Growwer::ApiError => e
132
+ puts "Error when calling SellerMediasApi->create_seller_media_with_http_info: #{e}"
133
+ end
134
+ ```
135
+
136
+ ### Parameters
137
+
138
+ | Name | Type | Description | Notes |
139
+ | ---- | ---- | ----------- | ----- |
140
+ | **idempotency_key** | **String** | A new key for each write, reused only to retry that same write. 1 to 255 printable ASCII characters without spaces (&#x60;!&#x60; to &#x60;~&#x60;); any other value answers 400 &#x60;invalid_idempotency_key&#x60;. | |
141
+ | **create_seller_media_request** | [**CreateSellerMediaRequest**](CreateSellerMediaRequest.md) | | |
142
+
143
+ ### Return type
144
+
145
+ [**SellerMedia**](SellerMedia.md)
146
+
147
+ ### Authorization
148
+
149
+ [apiKey](../README.md#apiKey)
150
+
151
+ ### HTTP request headers
152
+
153
+ - **Content-Type**: application/json
154
+ - **Accept**: application/json
155
+
156
+
157
+ ## delete_seller_media
158
+
159
+ > delete_seller_media(id, idempotency_key)
160
+
161
+ Delete a media you sell on
162
+
163
+ Deletes one of your medias, in any state, as the media delete button does. The media must have no order in progress: close or reject its orders first. The API never cancels an order for you, and an order placed while the delete runs is refused, never cancelled. What goes with the media, as on the web: - A running flash offer ends with it, and its managed-service proposals are deleted. - Its finished orders stay, with the media's URL; they read `media.id` null. - Buyers' favourites and discards of the domain stay, as they are kept by domain. - The catalogue search drops the media shortly after the 204, as the search index updates asynchronously. Repeating the call with the same `Idempotency-Key` answers the same 204 with `Idempotent-Replayed: true`; a new key after the delete answers 404.
164
+
165
+ ### Examples
166
+
167
+ ```ruby
168
+ require 'time'
169
+ require 'growwer'
170
+ # setup authorization
171
+ Growwer.configure do |config|
172
+ # Configure Bearer authorization: apiKey
173
+ config.access_token = 'YOUR_BEARER_TOKEN'
174
+ end
175
+
176
+ api_instance = Growwer::SellerMediasApi.new
177
+ id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
178
+ idempotency_key = 'idempotency_key_example' # String | A new key for each write, reused only to retry that same write. 1 to 255 printable ASCII characters without spaces (`!` to `~`); any other value answers 400 `invalid_idempotency_key`.
179
+
180
+ begin
181
+ # Delete a media you sell on
182
+ api_instance.delete_seller_media(id, idempotency_key)
183
+ rescue Growwer::ApiError => e
184
+ puts "Error when calling SellerMediasApi->delete_seller_media: #{e}"
185
+ end
186
+ ```
187
+
188
+ #### Using the delete_seller_media_with_http_info variant
189
+
190
+ This returns an Array which contains the response data (`nil` in this case), status code and headers.
191
+
192
+ > <Array(nil, Integer, Hash)> delete_seller_media_with_http_info(id, idempotency_key)
193
+
194
+ ```ruby
195
+ begin
196
+ # Delete a media you sell on
197
+ data, status_code, headers = api_instance.delete_seller_media_with_http_info(id, idempotency_key)
198
+ p status_code # => 2xx
199
+ p headers # => { ... }
200
+ p data # => nil
201
+ rescue Growwer::ApiError => e
202
+ puts "Error when calling SellerMediasApi->delete_seller_media_with_http_info: #{e}"
203
+ end
204
+ ```
205
+
206
+ ### Parameters
207
+
208
+ | Name | Type | Description | Notes |
209
+ | ---- | ---- | ----------- | ----- |
210
+ | **id** | **String** | | |
211
+ | **idempotency_key** | **String** | A new key for each write, reused only to retry that same write. 1 to 255 printable ASCII characters without spaces (&#x60;!&#x60; to &#x60;~&#x60;); any other value answers 400 &#x60;invalid_idempotency_key&#x60;. | |
212
+
213
+ ### Return type
214
+
215
+ nil (empty response body)
216
+
217
+ ### Authorization
218
+
219
+ [apiKey](../README.md#apiKey)
220
+
221
+ ### HTTP request headers
222
+
223
+ - **Content-Type**: Not defined
224
+ - **Accept**: application/json
225
+
226
+
84
227
  ## get_seller_media
85
228
 
86
229
  > <SellerMedia> get_seller_media(id)
@@ -231,9 +374,9 @@ end
231
374
 
232
375
  > <SellerMedia> update_seller_media(id, idempotency_key, update_seller_media_request)
233
376
 
234
- Edit the fees of a media you sell on
377
+ Edit the offer of a media you sell on
235
378
 
236
- Sets the fees of one of your medias, as the media edit page saves them. Send only the sections you change: a section you send replaces that section wholly, a section you leave out stays as it is. - `postOffer.pricingOptions` lists every link type you offer for sponsored posts, at least one. A link type you leave out is no longer offered. Each option needs at least one fee, and every option must offer the same sides (written by you, written by the buyer or Growwer), as the page requires. Each fee is at least 1 EUR. - `linkAdditionOffer.pricingOptions` lists the link types you offer for adding a link to an existing article; `null` or an empty list stops offering link additions. - `extraServices` is the full list of extra services you offer; an empty list removes them all. The fees are your base fees, the ones GET /seller/medias/{id} returns: while a flash offer runs, its discount keeps applying on top of them, and `currentCost` shows the result. `currentCost` may be sent back as read and is ignored. Characteristics, topics and comments are not edited here. As on the page, a change of the post offer's price may cancel the managed-service proposals accepted for the media whose price it changes, and raising the price above the best competitor's tells Growwer's support team. A restricted seller account may edit its fees.
379
+ Sets the fees, extra services, typology and post offer characteristics of one of your medias, as the media edit page saves them. Send only the fields you change: a field you send replaces that field wholly, a field you leave out stays as it is, inside `postOffer` too (sending only `postOffer.maximumLinks` keeps your fees). - `typology` is `blog` or `press`. - `postOffer.pricingOptions` lists every link type you offer for sponsored posts, at least one. A link type you leave out is no longer offered. Each option needs at least one fee, and every option must offer the same sides (written by you, written by the buyer or Growwer), as the page requires. Each fee is at least 1 EUR. - `postOffer.maximumLinks` is how many links a sponsored post may hold, 1 to 4; `postOffer.advertisingLabellingPolicy` whether posts are labelled as advertising (`always` or `never`); `postOffer.promotedSocialNetworks` the full list of social networks posts are promoted on, each once (an empty list for none). - `linkAdditionOffer.pricingOptions` lists the link types you offer for adding a link to an existing article; `null` or an empty list stops offering link additions. - `extraServices` is the full list of extra services you offer; an empty list removes them all. It is sent at the top level, although GET /seller/medias/{id} reads it inside `postOffer`. The fees are your base fees, the ones GET /seller/medias/{id} returns: while a flash offer runs, its discount keeps applying on top of them, and `currentCost` shows the result. `currentCost` may be sent back as read and is ignored. Country, language, topics and comments are not edited here. As on the page, a change of the post offer's price may cancel the managed-service proposals accepted for the media whose price it changes, and raising the price above the best competitor's tells Growwer's support team. A restricted seller account may edit its offer.
237
380
 
238
381
  ### Examples
239
382
 
@@ -252,7 +395,7 @@ idempotency_key = 'idempotency_key_example' # String | A new key for each write,
252
395
  update_seller_media_request = Growwer::UpdateSellerMediaRequest.new # UpdateSellerMediaRequest |
253
396
 
254
397
  begin
255
- # Edit the fees of a media you sell on
398
+ # Edit the offer of a media you sell on
256
399
  result = api_instance.update_seller_media(id, idempotency_key, update_seller_media_request)
257
400
  p result
258
401
  rescue Growwer::ApiError => e
@@ -268,7 +411,7 @@ This returns an Array which contains the response data, status code and headers.
268
411
 
269
412
  ```ruby
270
413
  begin
271
- # Edit the fees of a media you sell on
414
+ # Edit the offer of a media you sell on
272
415
  data, status_code, headers = api_instance.update_seller_media_with_http_info(id, idempotency_key, update_seller_media_request)
273
416
  p status_code # => 2xx
274
417
  p headers # => { ... }
@@ -4,6 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
+ | **typology** | **String** | | [optional] |
7
8
  | **post_offer** | [**UpdateSellerMediaRequestPostOffer**](UpdateSellerMediaRequestPostOffer.md) | | [optional] |
8
9
  | **link_addition_offer** | [**UpdateSellerMediaRequestLinkAdditionOffer**](UpdateSellerMediaRequestLinkAdditionOffer.md) | | [optional] |
9
10
  | **extra_services** | [**Array&lt;UpdateSellerMediaRequestExtraServicesInner&gt;**](UpdateSellerMediaRequestExtraServicesInner.md) | | [optional] |
@@ -14,6 +15,7 @@
14
15
  require 'growwer'
15
16
 
16
17
  instance = Growwer::UpdateSellerMediaRequest.new(
18
+ typology: null,
17
19
  post_offer: null,
18
20
  link_addition_offer: null,
19
21
  extra_services: null
@@ -4,7 +4,10 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **pricing_options** | [**Array&lt;UpdateSellerMediaRequestPostOfferPricingOptionsInner&gt;**](UpdateSellerMediaRequestPostOfferPricingOptionsInner.md) | | |
7
+ | **pricing_options** | [**Array&lt;UpdateSellerMediaRequestPostOfferPricingOptionsInner&gt;**](UpdateSellerMediaRequestPostOfferPricingOptionsInner.md) | | [optional] |
8
+ | **maximum_links** | **Integer** | | [optional] |
9
+ | **advertising_labelling_policy** | **String** | | [optional] |
10
+ | **promoted_social_networks** | **Array&lt;String&gt;** | | [optional] |
8
11
 
9
12
  ## Example
10
13
 
@@ -12,7 +15,10 @@
12
15
  require 'growwer'
13
16
 
14
17
  instance = Growwer::UpdateSellerMediaRequestPostOffer.new(
15
- pricing_options: null
18
+ pricing_options: null,
19
+ maximum_links: null,
20
+ advertising_labelling_policy: null,
21
+ promoted_social_networks: null
16
22
  )
17
23
  ```
18
24
 
@@ -278,7 +278,7 @@ module Growwer
278
278
  # @option opts [Boolean] :discarded &#x60;true&#x60;: only the medias you discarded for the project; &#x60;false&#x60;: leave them out.
279
279
  # @option opts [Boolean] :new Medias Growwer matched with the project recently. Only &#x60;true&#x60; applies it; omit it otherwise.
280
280
  # @option opts [String] :ranks_goal_keyword A comma-separated list of keyword origins: medias that rank for a keyword of the project from any of them. &#x60;user&#x60;: your keywords; &#x60;publicGenerated&#x60;: keywords Growwer found for the project.
281
- # @option opts [String] :ranks_ai_keyword A comma-separated list of AI answer engines: medias cited for a keyword of the project by any of them. &#x60;googleAiOverview&#x60;, &#x60;chatgpt&#x60;, &#x60;googleAiMode&#x60;.
281
+ # @option opts [String] :ranks_ai_keyword A comma-separated list of AI answer engines: medias the web lists an AI keyword of the project for, from any of them. &#x60;googleAiOverview&#x60;, &#x60;chatgpt&#x60;, &#x60;googleAiMode&#x60;.
282
282
  # @option opts [Integer] :limit Medias per page, 1 to 100. (default to 20)
283
283
  # @option opts [Integer] :offset Medias to skip, at most 99900. (default to 0)
284
284
  # @return [ListFlashOffers200Response]
@@ -323,7 +323,7 @@ module Growwer
323
323
  # @option opts [Boolean] :discarded &#x60;true&#x60;: only the medias you discarded for the project; &#x60;false&#x60;: leave them out.
324
324
  # @option opts [Boolean] :new Medias Growwer matched with the project recently. Only &#x60;true&#x60; applies it; omit it otherwise.
325
325
  # @option opts [String] :ranks_goal_keyword A comma-separated list of keyword origins: medias that rank for a keyword of the project from any of them. &#x60;user&#x60;: your keywords; &#x60;publicGenerated&#x60;: keywords Growwer found for the project.
326
- # @option opts [String] :ranks_ai_keyword A comma-separated list of AI answer engines: medias cited for a keyword of the project by any of them. &#x60;googleAiOverview&#x60;, &#x60;chatgpt&#x60;, &#x60;googleAiMode&#x60;.
326
+ # @option opts [String] :ranks_ai_keyword A comma-separated list of AI answer engines: medias the web lists an AI keyword of the project for, from any of them. &#x60;googleAiOverview&#x60;, &#x60;chatgpt&#x60;, &#x60;googleAiMode&#x60;.
327
327
  # @option opts [Integer] :limit Medias per page, 1 to 100. (default to 20)
328
328
  # @option opts [Integer] :offset Medias to skip, at most 99900. (default to 0)
329
329
  # @return [Array<(ListFlashOffers200Response, Integer, Hash)>] ListFlashOffers200Response data, response status code and response headers
@@ -558,7 +558,7 @@ module Growwer
558
558
  # @option opts [Boolean] :discarded &#x60;true&#x60;: only the medias you discarded for the project; &#x60;false&#x60;: leave them out.
559
559
  # @option opts [Boolean] :new Medias Growwer matched with the project recently. Only &#x60;true&#x60; applies it; omit it otherwise.
560
560
  # @option opts [String] :ranks_goal_keyword A comma-separated list of keyword origins: medias that rank for a keyword of the project from any of them. &#x60;user&#x60;: your keywords; &#x60;publicGenerated&#x60;: keywords Growwer found for the project.
561
- # @option opts [String] :ranks_ai_keyword A comma-separated list of AI answer engines: medias cited for a keyword of the project by any of them. &#x60;googleAiOverview&#x60;, &#x60;chatgpt&#x60;, &#x60;googleAiMode&#x60;.
561
+ # @option opts [String] :ranks_ai_keyword A comma-separated list of AI answer engines: medias the web lists an AI keyword of the project for, from any of them. &#x60;googleAiOverview&#x60;, &#x60;chatgpt&#x60;, &#x60;googleAiMode&#x60;.
562
562
  # @option opts [Integer] :limit Medias per page, 1 to 100. (default to 20)
563
563
  # @option opts [Integer] :offset Medias to skip, at most 99900. (default to 0)
564
564
  # @return [ListFlashOffers200Response]
@@ -605,7 +605,7 @@ module Growwer
605
605
  # @option opts [Boolean] :discarded &#x60;true&#x60;: only the medias you discarded for the project; &#x60;false&#x60;: leave them out.
606
606
  # @option opts [Boolean] :new Medias Growwer matched with the project recently. Only &#x60;true&#x60; applies it; omit it otherwise.
607
607
  # @option opts [String] :ranks_goal_keyword A comma-separated list of keyword origins: medias that rank for a keyword of the project from any of them. &#x60;user&#x60;: your keywords; &#x60;publicGenerated&#x60;: keywords Growwer found for the project.
608
- # @option opts [String] :ranks_ai_keyword A comma-separated list of AI answer engines: medias cited for a keyword of the project by any of them. &#x60;googleAiOverview&#x60;, &#x60;chatgpt&#x60;, &#x60;googleAiMode&#x60;.
608
+ # @option opts [String] :ranks_ai_keyword A comma-separated list of AI answer engines: medias the web lists an AI keyword of the project for, from any of them. &#x60;googleAiOverview&#x60;, &#x60;chatgpt&#x60;, &#x60;googleAiMode&#x60;.
609
609
  # @option opts [Integer] :limit Medias per page, 1 to 100. (default to 20)
610
610
  # @option opts [Integer] :offset Medias to skip, at most 99900. (default to 0)
611
611
  # @return [Array<(ListFlashOffers200Response, Integer, Hash)>] ListFlashOffers200Response data, response status code and response headers
@@ -380,7 +380,7 @@ module Growwer
380
380
  end
381
381
 
382
382
  # Request a new campaign
383
- # Asks your account manager for a new campaign, as the managed service page does: the team emails you to agree on it. For accounts with a managed service (GET /me `managedService.active`); without one, POST /managed-service/info-requests asks about the service. You may send 5 such requests per UTC day through the API. Past them it answers 429 `managed_service_request_limit_reached`, with `Retry-After` the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
383
+ # Asks your account manager for a new campaign, as the managed service page does: the team emails you to agree on it. For accounts with a managed service (GET /me `managedService.active`); without one, POST /managed-service/info-requests asks about the service. The API admits a limited number of such requests per user and UTC day (5 by default; the refusal message states the current limit). Past it, it answers 429 `managed_service_request_limit_reached`, with `Retry-After` the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
384
384
  # @param idempotency_key [String] A new key for each write, reused only to retry that same write. 1 to 255 printable ASCII characters without spaces (&#x60;!&#x60; to &#x60;~&#x60;); any other value answers 400 &#x60;invalid_idempotency_key&#x60;.
385
385
  # @param managed_service_request [ManagedServiceRequest]
386
386
  # @param [Hash] opts the optional parameters
@@ -391,7 +391,7 @@ module Growwer
391
391
  end
392
392
 
393
393
  # Request a new campaign
394
- # Asks your account manager for a new campaign, as the managed service page does: the team emails you to agree on it. For accounts with a managed service (GET /me &#x60;managedService.active&#x60;); without one, POST /managed-service/info-requests asks about the service. You may send 5 such requests per UTC day through the API. Past them it answers 429 &#x60;managed_service_request_limit_reached&#x60;, with &#x60;Retry-After&#x60; the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
394
+ # Asks your account manager for a new campaign, as the managed service page does: the team emails you to agree on it. For accounts with a managed service (GET /me &#x60;managedService.active&#x60;); without one, POST /managed-service/info-requests asks about the service. The API admits a limited number of such requests per user and UTC day (5 by default; the refusal message states the current limit). Past it, it answers 429 &#x60;managed_service_request_limit_reached&#x60;, with &#x60;Retry-After&#x60; the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
395
395
  # @param idempotency_key [String] A new key for each write, reused only to retry that same write. 1 to 255 printable ASCII characters without spaces (&#x60;!&#x60; to &#x60;~&#x60;); any other value answers 400 &#x60;invalid_idempotency_key&#x60;.
396
396
  # @param managed_service_request [ManagedServiceRequest]
397
397
  # @param [Hash] opts the optional parameters
@@ -459,7 +459,7 @@ module Growwer
459
459
  end
460
460
 
461
461
  # Ask about the managed service
462
- # Asks the team about the managed service for your website, as the managed service landing page does: the team contacts you. For accounts without a managed service (GET /me `managedService.active`); with one, POST /managed-service/campaign-requests requests a new campaign. You may send 5 such requests per UTC day through the API. Past them it answers 429 `managed_service_request_limit_reached`, with `Retry-After` the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
462
+ # Asks the team about the managed service for your website, as the managed service landing page does: the team contacts you. For accounts without a managed service (GET /me `managedService.active`); with one, POST /managed-service/campaign-requests requests a new campaign. The API admits a limited number of such requests per user and UTC day (5 by default; the refusal message states the current limit). Past it, it answers 429 `managed_service_request_limit_reached`, with `Retry-After` the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
463
463
  # @param idempotency_key [String] A new key for each write, reused only to retry that same write. 1 to 255 printable ASCII characters without spaces (&#x60;!&#x60; to &#x60;~&#x60;); any other value answers 400 &#x60;invalid_idempotency_key&#x60;.
464
464
  # @param managed_service_request [ManagedServiceRequest]
465
465
  # @param [Hash] opts the optional parameters
@@ -470,7 +470,7 @@ module Growwer
470
470
  end
471
471
 
472
472
  # Ask about the managed service
473
- # Asks the team about the managed service for your website, as the managed service landing page does: the team contacts you. For accounts without a managed service (GET /me &#x60;managedService.active&#x60;); with one, POST /managed-service/campaign-requests requests a new campaign. You may send 5 such requests per UTC day through the API. Past them it answers 429 &#x60;managed_service_request_limit_reached&#x60;, with &#x60;Retry-After&#x60; the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
473
+ # Asks the team about the managed service for your website, as the managed service landing page does: the team contacts you. For accounts without a managed service (GET /me &#x60;managedService.active&#x60;); with one, POST /managed-service/campaign-requests requests a new campaign. The API admits a limited number of such requests per user and UTC day (5 by default; the refusal message states the current limit). Past it, it answers 429 &#x60;managed_service_request_limit_reached&#x60;, with &#x60;Retry-After&#x60; the time to the next UTC midnight. A request that is refused (4xx) does not count; one that fails on the server (5xx) does, as it may have been sent.
474
474
  # @param idempotency_key [String] A new key for each write, reused only to retry that same write. 1 to 255 printable ASCII characters without spaces (&#x60;!&#x60; to &#x60;~&#x60;); any other value answers 400 &#x60;invalid_idempotency_key&#x60;.
475
475
  # @param managed_service_request [ManagedServiceRequest]
476
476
  # @param [Hash] opts the optional parameters