growwer 1.0.1 → 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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +32 -27
  3. data/docs/AccountApi.md +0 -72
  4. data/docs/{OrdersApi.md → BuyerOrdersApi.md} +45 -45
  5. data/docs/{BuyerMoneyApi.md → BuyerWalletApi.md} +21 -21
  6. data/docs/CatalogueApi.md +6 -6
  7. data/docs/CreateSellerMediaRequest.md +38 -0
  8. data/docs/CreateSellerMediaRequestPostOffer.md +24 -0
  9. data/docs/Error.md +2 -2
  10. data/docs/FilesApi.md +1 -1
  11. data/docs/GetMe200ResponseCatalogue.md +6 -2
  12. data/docs/ManagedServicesApi.md +2 -2
  13. data/docs/ProjectCatalogueMediaAllOfProject.md +3 -1
  14. data/docs/ProjectCatalogueMediaAllOfProjectAiKeywords.md +20 -0
  15. data/docs/SellerAccountApi.md +79 -0
  16. data/docs/SellerMedia.md +2 -0
  17. data/docs/SellerMediaPostOffer.md +7 -1
  18. data/docs/SellerMediasApi.md +148 -5
  19. data/docs/{SellerMoneyApi.md → SellerWalletApi.md} +21 -21
  20. data/docs/UpdateSellerMediaRequest.md +2 -0
  21. data/docs/UpdateSellerMediaRequestPostOffer.md +8 -2
  22. data/lib/growwer/api/account_api.rb +0 -79
  23. data/lib/growwer/api/{orders_api.rb → buyer_orders_api.rb} +62 -62
  24. data/lib/growwer/api/{buyer_money_api.rb → buyer_wallet_api.rb} +24 -24
  25. data/lib/growwer/api/catalogue_api.rb +8 -8
  26. data/lib/growwer/api/files_api.rb +2 -2
  27. data/lib/growwer/api/managed_services_api.rb +4 -4
  28. data/lib/growwer/api/seller_account_api.rb +101 -0
  29. data/lib/growwer/api/seller_medias_api.rb +157 -4
  30. data/lib/growwer/api/{seller_money_api.rb → seller_wallet_api.rb} +24 -24
  31. data/lib/growwer/api_client.rb +1 -1
  32. data/lib/growwer/models/create_seller_media_request.rb +447 -0
  33. data/lib/growwer/models/create_seller_media_request_post_offer.rb +273 -0
  34. data/lib/growwer/models/error.rb +1 -1
  35. data/lib/growwer/models/get_me200_response_catalogue.rb +69 -5
  36. data/lib/growwer/models/project_catalogue_media_all_of_project.rb +34 -5
  37. data/lib/growwer/models/project_catalogue_media_all_of_project_ai_keywords.rb +211 -0
  38. data/lib/growwer/models/seller_media.rb +29 -1
  39. data/lib/growwer/models/seller_media_post_offer.rb +99 -1
  40. data/lib/growwer/models/update_seller_media_request.rb +44 -1
  41. data/lib/growwer/models/update_seller_media_request_post_offer.rb +96 -12
  42. data/lib/growwer/version.rb +1 -1
  43. data/lib/growwer.rb +7 -3
  44. data/spec/api/account_api_spec.rb +1 -14
  45. data/spec/api/{orders_api_spec.rb → buyer_orders_api_spec.rb} +13 -13
  46. data/spec/api/{buyer_money_api_spec.rb → buyer_wallet_api_spec.rb} +7 -7
  47. data/spec/api/seller_account_api_spec.rb +48 -0
  48. data/spec/api/{seller_money_api_spec.rb → seller_wallet_api_spec.rb} +7 -7
  49. data/spec/models/create_seller_media_request_post_offer_spec.rb +62 -0
  50. data/spec/models/create_seller_media_request_spec.rb +100 -0
  51. data/spec/models/project_catalogue_media_all_of_project_ai_keywords_spec.rb +46 -0
  52. metadata +30 -14
@@ -180,7 +180,7 @@ module Growwer
180
180
  end
181
181
 
182
182
  # Get a media
183
- # One media of the catalogue: an active, public media. A media you have ordered is always readable, even if it has since left the catalogue, and is open to every account. Otherwise the catalogue is open to accounts with recent completed orders (see `catalogue.eligible` on GET /me), and the media counts towards the distinct medias the account may see per day (UTC). For the media's state in one of your projects, search the project with GET /projects/{id}/medias.
183
+ # One media of the catalogue: an active, public media. A media you have ordered is always readable, even if it has since left the catalogue, and is open to every account. Otherwise the media counts towards the distinct medias the account may see per day (UTC): the full daily cap for accounts with recent completed orders, a smaller trial quota for other accounts (see `catalogue.eligible`, `catalogue.dailyCap` and `catalogue.remainingToday` on GET /me). For the media's state in one of your projects, search the project with GET /projects/{id}/medias.
184
184
  # @param id [String] The media.
185
185
  # @param [Hash] opts the optional parameters
186
186
  # @return [CatalogueMedia]
@@ -190,7 +190,7 @@ module Growwer
190
190
  end
191
191
 
192
192
  # Get a media
193
- # One media of the catalogue: an active, public media. A media you have ordered is always readable, even if it has since left the catalogue, and is open to every account. Otherwise the catalogue is open to accounts with recent completed orders (see `catalogue.eligible` on GET /me), and the media counts towards the distinct medias the account may see per day (UTC). For the media's state in one of your projects, search the project with GET /projects/{id}/medias.
193
+ # One media of the catalogue: an active, public media. A media you have ordered is always readable, even if it has since left the catalogue, and is open to every account. Otherwise the media counts towards the distinct medias the account may see per day (UTC): the full daily cap for accounts with recent completed orders, a smaller trial quota for other accounts (see `catalogue.eligible`, `catalogue.dailyCap` and `catalogue.remainingToday` on GET /me). For the media's state in one of your projects, search the project with GET /projects/{id}/medias.
194
194
  # @param id [String] The media.
195
195
  # @param [Hash] opts the optional parameters
196
196
  # @return [Array<(CatalogueMedia, Integer, Hash)>] CatalogueMedia data, response status code and response headers
@@ -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
@@ -521,7 +521,7 @@ module Growwer
521
521
  end
522
522
 
523
523
  # Search the catalogue for a project
524
- # The medias the catalogue offers for one of your projects, as the web lists them, with each media's state in the project. Filter with the parameters below, which all combine, or apply one of your saved filters with `savedFilterId` alone. The catalogue is open to accounts with recent completed orders (see `catalogue.eligible` on GET /me), and each account can see a limited number of distinct medias per day (UTC) across the catalogue operations; medias seen again the same day are free.
524
+ # The medias the catalogue offers for one of your projects, as the web lists them, with each media's state in the project. Filter with the parameters below, which all combine, or apply one of your saved filters with `savedFilterId` alone. Each account can see a limited number of distinct medias per day (UTC) across the catalogue operations: the full daily cap for accounts with recent completed orders, as buyer or as seller, and a smaller trial quota for other accounts, which rises to the full cap after a completed order (see `catalogue.eligible`, `catalogue.dailyCap` and `catalogue.remainingToday` on GET /me). Medias seen again the same day are free.
525
525
  # @param id [String] The project.
526
526
  # @param [Hash] opts the optional parameters
527
527
  # @option opts [String] :source Which of the project&#39;s medias to search: &#x60;all&#x60; (the default), &#x60;recommended&#x60; (those Growwer recommends for the project), or those you marked &#x60;favourite&#x60;, &#x60;discarded&#x60; or &#x60;requested&#x60;, or &#x60;bought&#x60; for the project. Do not combine it with the parameter of the same state.
@@ -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]
@@ -568,7 +568,7 @@ module Growwer
568
568
  end
569
569
 
570
570
  # Search the catalogue for a project
571
- # The medias the catalogue offers for one of your projects, as the web lists them, with each media&#39;s state in the project. Filter with the parameters below, which all combine, or apply one of your saved filters with &#x60;savedFilterId&#x60; alone. The catalogue is open to accounts with recent completed orders (see &#x60;catalogue.eligible&#x60; on GET /me), and each account can see a limited number of distinct medias per day (UTC) across the catalogue operations; medias seen again the same day are free.
571
+ # The medias the catalogue offers for one of your projects, as the web lists them, with each media&#39;s state in the project. Filter with the parameters below, which all combine, or apply one of your saved filters with &#x60;savedFilterId&#x60; alone. Each account can see a limited number of distinct medias per day (UTC) across the catalogue operations: the full daily cap for accounts with recent completed orders, as buyer or as seller, and a smaller trial quota for other accounts, which rises to the full cap after a completed order (see &#x60;catalogue.eligible&#x60;, &#x60;catalogue.dailyCap&#x60; and &#x60;catalogue.remainingToday&#x60; on GET /me). Medias seen again the same day are free.
572
572
  # @param id [String] The project.
573
573
  # @param [Hash] opts the optional parameters
574
574
  # @option opts [String] :source Which of the project&#39;s medias to search: &#x60;all&#x60; (the default), &#x60;recommended&#x60; (those Growwer recommends for the project), or those you marked &#x60;favourite&#x60;, &#x60;discarded&#x60; or &#x60;requested&#x60;, or &#x60;bought&#x60; for the project. Do not combine it with the parameter of the same state.
@@ -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
@@ -20,7 +20,7 @@ module Growwer
20
20
  @api_client = api_client
21
21
  end
22
22
  # Upload a file
23
- # Uploads a document (odt, doc, docx or txt, up to 8 MB) for a later write to reference by its `id`. A file belongs to you, can be used by one write, and expires 24 hours after it was uploaded; an expired or used file is answered like an unknown one.
23
+ # Uploads a document (odt, doc, docx or txt, up to 8 MB) for a later write to reference by its `id`. A file belongs to you, can be used by one write, and expires 24 hours after it was uploaded; an expired or used file is answered like an unknown one. You may hold 20 files that no write has used yet and that have not expired. Past them it answers 429 `file_limit_reached`, with `details.limit` the number you may hold and `Retry-After` the seconds until the first of them expires; using one of them in a write frees its place at once. A file refused as invalid (422) is refused before they are counted, and a refused upload stores nothing.
24
24
  # @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;.
25
25
  # @param file [File]
26
26
  # @param [Hash] opts the optional parameters
@@ -31,7 +31,7 @@ module Growwer
31
31
  end
32
32
 
33
33
  # Upload a file
34
- # Uploads a document (odt, doc, docx or txt, up to 8 MB) for a later write to reference by its &#x60;id&#x60;. A file belongs to you, can be used by one write, and expires 24 hours after it was uploaded; an expired or used file is answered like an unknown one.
34
+ # Uploads a document (odt, doc, docx or txt, up to 8 MB) for a later write to reference by its &#x60;id&#x60;. A file belongs to you, can be used by one write, and expires 24 hours after it was uploaded; an expired or used file is answered like an unknown one. You may hold 20 files that no write has used yet and that have not expired. Past them it answers 429 &#x60;file_limit_reached&#x60;, with &#x60;details.limit&#x60; the number you may hold and &#x60;Retry-After&#x60; the seconds until the first of them expires; using one of them in a write frees its place at once. A file refused as invalid (422) is refused before they are counted, and a refused upload stores nothing.
35
35
  # @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;.
36
36
  # @param file [File]
37
37
  # @param [Hash] opts the optional parameters
@@ -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
@@ -0,0 +1,101 @@
1
+ =begin
2
+ #Growwer API
3
+
4
+ #The Growwer customer API. Authenticate every call with an API key created on your profile page, sent as `Authorization: Bearer <key>`. A read key can call every GET operation; writes need a read and write key and an `Idempotency-Key` header. Idempotency: use a new `Idempotency-Key` (1 to 255 printable ASCII characters without spaces) for each operation and reuse it only to retry that same operation. Keys belong to your account, not to one API key. - A successful write is stored for 30 days: a retry with the same key and the same request replays its response with `Idempotent-Replayed: true` and does nothing again. - A refused write (4xx) has no effect and releases its key: once you fix the cause, retry with the same key and the write runs. - A failed write (5xx) may have taken effect, so it is never run again under its key: a retry gets 409 `idempotency_outcome_unknown`. Check whether it took effect before retrying with a new key. - A retry while the first request is still running gets 409 `idempotency_request_in_progress`. A request still running after 5 minutes is treated as failed: a retry gets 409 `idempotency_outcome_unknown`. - The same key with a different request (method, path, query or body) gets 409 `idempotency_key_reused`. A write without the header gets 400 `idempotency_key_required`. Every response carries `X-Request-Id`. Errors share one shape, `{code, message, requestId, details?}`. Money is integer cents plus a currency code and dates are ISO-8601.
5
+
6
+ The version of the OpenAPI document: 1
7
+ Contact: support@growwer.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.24.0
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module Growwer
16
+ class SellerAccountApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+ # Set your holiday
23
+ # Starts, changes or ends your holiday, as the holiday settings of your profile page do. While you are on holiday your medias take no orders. `endDate` is the day your holiday ends, at 00:00 of that day in Growwer's server time, and must be later than now; leave it out, or send null, for a holiday you end yourself. Ending the holiday takes no `endDate`. A holiday that already is as you ask is answered 200 without a change. A restricted seller account stays on holiday until the restriction is lifted, so any change is refused. Your holiday is also in GET /me.
24
+ # @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;.
25
+ # @param put_seller_holiday_request [PutSellerHolidayRequest]
26
+ # @param [Hash] opts the optional parameters
27
+ # @return [PutSellerHoliday200Response]
28
+ def put_seller_holiday(idempotency_key, put_seller_holiday_request, opts = {})
29
+ data, _status_code, _headers = put_seller_holiday_with_http_info(idempotency_key, put_seller_holiday_request, opts)
30
+ data
31
+ end
32
+
33
+ # Set your holiday
34
+ # Starts, changes or ends your holiday, as the holiday settings of your profile page do. While you are on holiday your medias take no orders. &#x60;endDate&#x60; is the day your holiday ends, at 00:00 of that day in Growwer&#39;s server time, and must be later than now; leave it out, or send null, for a holiday you end yourself. Ending the holiday takes no &#x60;endDate&#x60;. A holiday that already is as you ask is answered 200 without a change. A restricted seller account stays on holiday until the restriction is lifted, so any change is refused. Your holiday is also in GET /me.
35
+ # @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;.
36
+ # @param put_seller_holiday_request [PutSellerHolidayRequest]
37
+ # @param [Hash] opts the optional parameters
38
+ # @return [Array<(PutSellerHoliday200Response, Integer, Hash)>] PutSellerHoliday200Response data, response status code and response headers
39
+ def put_seller_holiday_with_http_info(idempotency_key, put_seller_holiday_request, opts = {})
40
+ if @api_client.config.debugging
41
+ @api_client.config.logger.debug 'Calling API: SellerAccountApi.put_seller_holiday ...'
42
+ end
43
+ # verify the required parameter 'idempotency_key' is set
44
+ if @api_client.config.client_side_validation && idempotency_key.nil?
45
+ fail ArgumentError, "Missing the required parameter 'idempotency_key' when calling SellerAccountApi.put_seller_holiday"
46
+ end
47
+ if @api_client.config.client_side_validation && idempotency_key.to_s.length > 255
48
+ fail ArgumentError, 'invalid value for "idempotency_key" when calling SellerAccountApi.put_seller_holiday, the character length must be smaller than or equal to 255.'
49
+ end
50
+
51
+ # verify the required parameter 'put_seller_holiday_request' is set
52
+ if @api_client.config.client_side_validation && put_seller_holiday_request.nil?
53
+ fail ArgumentError, "Missing the required parameter 'put_seller_holiday_request' when calling SellerAccountApi.put_seller_holiday"
54
+ end
55
+ # resource path
56
+ local_var_path = '/api/v1/seller/holiday'
57
+
58
+ # query parameters
59
+ query_params = opts[:query_params] || {}
60
+
61
+ # header parameters
62
+ header_params = opts[:header_params] || {}
63
+ # HTTP header 'Accept' (if needed)
64
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
65
+ # HTTP header 'Content-Type'
66
+ content_type = @api_client.select_header_content_type(['application/json'])
67
+ if !content_type.nil?
68
+ header_params['Content-Type'] = content_type
69
+ end
70
+ header_params[:'Idempotency-Key'] = idempotency_key
71
+
72
+ # form parameters
73
+ form_params = opts[:form_params] || {}
74
+
75
+ # http body (model)
76
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(put_seller_holiday_request)
77
+
78
+ # return_type
79
+ return_type = opts[:debug_return_type] || 'PutSellerHoliday200Response'
80
+
81
+ # auth_names
82
+ auth_names = opts[:debug_auth_names] || ['apiKey']
83
+
84
+ new_options = opts.merge(
85
+ :operation => :"SellerAccountApi.put_seller_holiday",
86
+ :header_params => header_params,
87
+ :query_params => query_params,
88
+ :form_params => form_params,
89
+ :body => post_body,
90
+ :auth_names => auth_names,
91
+ :return_type => return_type
92
+ )
93
+
94
+ data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
95
+ if @api_client.config.debugging
96
+ @api_client.config.logger.debug "API called: SellerAccountApi#put_seller_holiday\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
97
+ end
98
+ return data, status_code, headers
99
+ end
100
+ end
101
+ end
@@ -93,6 +93,159 @@ module Growwer
93
93
  return data, status_code, headers
94
94
  end
95
95
 
96
+ # Register a media you sell on
97
+ # 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.
98
+ # @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;.
99
+ # @param create_seller_media_request [CreateSellerMediaRequest]
100
+ # @param [Hash] opts the optional parameters
101
+ # @return [SellerMedia]
102
+ def create_seller_media(idempotency_key, create_seller_media_request, opts = {})
103
+ data, _status_code, _headers = create_seller_media_with_http_info(idempotency_key, create_seller_media_request, opts)
104
+ data
105
+ end
106
+
107
+ # Register a media you sell on
108
+ # Registers one of your medias, as the media create page does. The media is created with &#x60;state: pending_review&#x60; and Growwer reviews it in the background, as for a media registered on the web; GET /seller/medias/{id} shows its state. - &#x60;rootUrl&#x60; is the media&#39;s root URL; &#x60;typology&#x60; is &#x60;blog&#x60; or &#x60;press&#x60;. - &#x60;country&#x60; and &#x60;language&#x60; take the codes GET /vocabulary publishes; &#x60;topics&#x60; and &#x60;bannedTopics&#x60; take its topic ids, at most 100 each, and no topic may be both; &#x60;bannedTopics&#x60; left out bans none. - &#x60;postOffer.pricingOptions&#x60; 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. - &#x60;postOffer.maximumLinks&#x60; is how many links a sponsored post may hold, 1 to 4; &#x60;postOffer.advertisingLabellingPolicy&#x60; whether posts are labelled as advertising, &#x60;never&#x60; when left out; &#x60;postOffer.promotedSocialNetworks&#x60; the social networks posts are promoted on, none when left out. - &#x60;linkAdditionOffer.pricingOptions&#x60; lists the link types you offer for adding a link to an existing article; left out, &#x60;null&#x60; or an empty list offers none. - &#x60;extraServices&#x60; 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 &#x60;postOffer&#x60;. - &#x60;acceptMediaPublishingTerms&#x60; and &#x60;declareMediaOwnership&#x60; must be &#x60;true&#x60;: they accept the media publishing terms and declare that you own or manage the media, as the page&#39;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 &#x60;media_already_registered&#x60;, and each such refusal counts toward a daily limit of refusals (429 &#x60;media_duplicate_limit_reached&#x60; 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 &#x60;Idempotency-Key&#x60; 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 &#x60;media_already_registered&#x60; counts toward the daily limit of refusals as it does for a single call. Retry a call that got no answer with its same &#x60;Idempotency-Key&#x60;, as for any write.
109
+ # @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;.
110
+ # @param create_seller_media_request [CreateSellerMediaRequest]
111
+ # @param [Hash] opts the optional parameters
112
+ # @return [Array<(SellerMedia, Integer, Hash)>] SellerMedia data, response status code and response headers
113
+ def create_seller_media_with_http_info(idempotency_key, create_seller_media_request, opts = {})
114
+ if @api_client.config.debugging
115
+ @api_client.config.logger.debug 'Calling API: SellerMediasApi.create_seller_media ...'
116
+ end
117
+ # verify the required parameter 'idempotency_key' is set
118
+ if @api_client.config.client_side_validation && idempotency_key.nil?
119
+ fail ArgumentError, "Missing the required parameter 'idempotency_key' when calling SellerMediasApi.create_seller_media"
120
+ end
121
+ if @api_client.config.client_side_validation && idempotency_key.to_s.length > 255
122
+ fail ArgumentError, 'invalid value for "idempotency_key" when calling SellerMediasApi.create_seller_media, the character length must be smaller than or equal to 255.'
123
+ end
124
+
125
+ # verify the required parameter 'create_seller_media_request' is set
126
+ if @api_client.config.client_side_validation && create_seller_media_request.nil?
127
+ fail ArgumentError, "Missing the required parameter 'create_seller_media_request' when calling SellerMediasApi.create_seller_media"
128
+ end
129
+ # resource path
130
+ local_var_path = '/api/v1/seller/medias'
131
+
132
+ # query parameters
133
+ query_params = opts[:query_params] || {}
134
+
135
+ # header parameters
136
+ header_params = opts[:header_params] || {}
137
+ # HTTP header 'Accept' (if needed)
138
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
139
+ # HTTP header 'Content-Type'
140
+ content_type = @api_client.select_header_content_type(['application/json'])
141
+ if !content_type.nil?
142
+ header_params['Content-Type'] = content_type
143
+ end
144
+ header_params[:'Idempotency-Key'] = idempotency_key
145
+
146
+ # form parameters
147
+ form_params = opts[:form_params] || {}
148
+
149
+ # http body (model)
150
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(create_seller_media_request)
151
+
152
+ # return_type
153
+ return_type = opts[:debug_return_type] || 'SellerMedia'
154
+
155
+ # auth_names
156
+ auth_names = opts[:debug_auth_names] || ['apiKey']
157
+
158
+ new_options = opts.merge(
159
+ :operation => :"SellerMediasApi.create_seller_media",
160
+ :header_params => header_params,
161
+ :query_params => query_params,
162
+ :form_params => form_params,
163
+ :body => post_body,
164
+ :auth_names => auth_names,
165
+ :return_type => return_type
166
+ )
167
+
168
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
169
+ if @api_client.config.debugging
170
+ @api_client.config.logger.debug "API called: SellerMediasApi#create_seller_media\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
171
+ end
172
+ return data, status_code, headers
173
+ end
174
+
175
+ # Delete a media you sell on
176
+ # 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.
177
+ # @param id [String]
178
+ # @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;.
179
+ # @param [Hash] opts the optional parameters
180
+ # @return [nil]
181
+ def delete_seller_media(id, idempotency_key, opts = {})
182
+ delete_seller_media_with_http_info(id, idempotency_key, opts)
183
+ nil
184
+ end
185
+
186
+ # Delete a media you sell on
187
+ # 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&#39;s URL; they read &#x60;media.id&#x60; null. - Buyers&#39; 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 &#x60;Idempotency-Key&#x60; answers the same 204 with &#x60;Idempotent-Replayed: true&#x60;; a new key after the delete answers 404.
188
+ # @param id [String]
189
+ # @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;.
190
+ # @param [Hash] opts the optional parameters
191
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
192
+ def delete_seller_media_with_http_info(id, idempotency_key, opts = {})
193
+ if @api_client.config.debugging
194
+ @api_client.config.logger.debug 'Calling API: SellerMediasApi.delete_seller_media ...'
195
+ end
196
+ # verify the required parameter 'id' is set
197
+ if @api_client.config.client_side_validation && id.nil?
198
+ fail ArgumentError, "Missing the required parameter 'id' when calling SellerMediasApi.delete_seller_media"
199
+ end
200
+ # verify the required parameter 'idempotency_key' is set
201
+ if @api_client.config.client_side_validation && idempotency_key.nil?
202
+ fail ArgumentError, "Missing the required parameter 'idempotency_key' when calling SellerMediasApi.delete_seller_media"
203
+ end
204
+ if @api_client.config.client_side_validation && idempotency_key.to_s.length > 255
205
+ fail ArgumentError, 'invalid value for "idempotency_key" when calling SellerMediasApi.delete_seller_media, the character length must be smaller than or equal to 255.'
206
+ end
207
+
208
+ # resource path
209
+ local_var_path = '/api/v1/seller/medias/{id}'.sub('{id}', CGI.escape(id.to_s))
210
+
211
+ # query parameters
212
+ query_params = opts[:query_params] || {}
213
+
214
+ # header parameters
215
+ header_params = opts[:header_params] || {}
216
+ # HTTP header 'Accept' (if needed)
217
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
218
+ header_params[:'Idempotency-Key'] = idempotency_key
219
+
220
+ # form parameters
221
+ form_params = opts[:form_params] || {}
222
+
223
+ # http body (model)
224
+ post_body = opts[:debug_body]
225
+
226
+ # return_type
227
+ return_type = opts[:debug_return_type]
228
+
229
+ # auth_names
230
+ auth_names = opts[:debug_auth_names] || ['apiKey']
231
+
232
+ new_options = opts.merge(
233
+ :operation => :"SellerMediasApi.delete_seller_media",
234
+ :header_params => header_params,
235
+ :query_params => query_params,
236
+ :form_params => form_params,
237
+ :body => post_body,
238
+ :auth_names => auth_names,
239
+ :return_type => return_type
240
+ )
241
+
242
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
243
+ if @api_client.config.debugging
244
+ @api_client.config.logger.debug "API called: SellerMediasApi#delete_seller_media\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
245
+ end
246
+ return data, status_code, headers
247
+ end
248
+
96
249
  # Get a media you sell on
97
250
  # One of your medias, with your fees, its extras, the competitive fees Growwer suggests and how it performs. Another seller's media is not found.
98
251
  # @param id [String]
@@ -241,8 +394,8 @@ module Growwer
241
394
  return data, status_code, headers
242
395
  end
243
396
 
244
- # Edit the fees of a media you sell on
245
- # 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.
397
+ # Edit the offer of a media you sell on
398
+ # 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.
246
399
  # @param id [String]
247
400
  # @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;.
248
401
  # @param update_seller_media_request [UpdateSellerMediaRequest]
@@ -253,8 +406,8 @@ module Growwer
253
406
  data
254
407
  end
255
408
 
256
- # Edit the fees of a media you sell on
257
- # 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. - &#x60;postOffer.pricingOptions&#x60; 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. - &#x60;linkAdditionOffer.pricingOptions&#x60; lists the link types you offer for adding a link to an existing article; &#x60;null&#x60; or an empty list stops offering link additions. - &#x60;extraServices&#x60; 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 &#x60;currentCost&#x60; shows the result. &#x60;currentCost&#x60; 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&#39;s price may cancel the managed-service proposals accepted for the media whose price it changes, and raising the price above the best competitor&#39;s tells Growwer&#39;s support team. A restricted seller account may edit its fees.
409
+ # Edit the offer of a media you sell on
410
+ # 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 &#x60;postOffer&#x60; too (sending only &#x60;postOffer.maximumLinks&#x60; keeps your fees). - &#x60;typology&#x60; is &#x60;blog&#x60; or &#x60;press&#x60;. - &#x60;postOffer.pricingOptions&#x60; 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. - &#x60;postOffer.maximumLinks&#x60; is how many links a sponsored post may hold, 1 to 4; &#x60;postOffer.advertisingLabellingPolicy&#x60; whether posts are labelled as advertising (&#x60;always&#x60; or &#x60;never&#x60;); &#x60;postOffer.promotedSocialNetworks&#x60; the full list of social networks posts are promoted on, each once (an empty list for none). - &#x60;linkAdditionOffer.pricingOptions&#x60; lists the link types you offer for adding a link to an existing article; &#x60;null&#x60; or an empty list stops offering link additions. - &#x60;extraServices&#x60; 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 &#x60;postOffer&#x60;. 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 &#x60;currentCost&#x60; shows the result. &#x60;currentCost&#x60; 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&#39;s price may cancel the managed-service proposals accepted for the media whose price it changes, and raising the price above the best competitor&#39;s tells Growwer&#39;s support team. A restricted seller account may edit its offer.
258
411
  # @param id [String]
259
412
  # @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;.
260
413
  # @param update_seller_media_request [UpdateSellerMediaRequest]