shapi-cli 0.0.0-stage → 0.2.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.
- package/LICENSE +202 -0
- package/README.md +49 -2
- package/advisories/anthropic-api-version-2026-10-21-sampling-params-400.json +35 -0
- package/advisories/github-workflow-dispatch-204-to-200.json +26 -0
- package/advisories/google-ads-api-v22-sunset.json +27 -0
- package/advisories/google-custom-search-json-api-shutdown.json +27 -0
- package/advisories/google-gemini-2-0-flash-shutdown.json +27 -0
- package/advisories/google-gemini-2-5-flash-image-shutdown.json +27 -0
- package/advisories/google-gemini-2-5-preview-tts-shutdown.json +27 -0
- package/advisories/hubspot-contact-lists-v1-sunset.json +28 -0
- package/advisories/hubspot-contacts-v1-list-memberships-removed.json +30 -0
- package/advisories/hubspot-marketing-emails-folderid-removed.json +39 -0
- package/advisories/hubspot-marketing-emails-v1-sunset.json +24 -0
- package/advisories/hubspot-pipelines-v1-sunset.json +44 -0
- package/advisories/meta-graph-commerce-order-management-removed.json +26 -0
- package/advisories/meta-graph-date-format-param-removed.json +30 -0
- package/advisories/meta-graph-delivery-estimate-fields-removed.json +30 -0
- package/advisories/meta-graph-instagram-oembed-fields-removed.json +33 -0
- package/advisories/meta-graph-marketing-api-v24-sunset.json +34 -0
- package/advisories/meta-graph-marketing-api-v25-sunset.json +35 -0
- package/advisories/meta-graph-page-insights-impressions-fans-removed.json +51 -0
- package/advisories/meta-graph-page-insights-reach-video-views-removed.json +57 -0
- package/advisories/meta-graph-root-ids-lookup-removed.json +30 -0
- package/advisories/meta-graph-v20-sunset.json +33 -0
- package/advisories/meta-graph-v21-sunset.json +33 -0
- package/advisories/openai-assistants-api-shutdown.json +27 -0
- package/advisories/openai-audio-translations-endpoint-shutdown.json +27 -0
- package/advisories/openai-evals-api-shutdown.json +27 -0
- package/advisories/quickbooks-companyinfo-neoenabled-removed.json +29 -0
- package/advisories/quickbooks-minorversion-below-75-ignored.json +40 -0
- package/advisories/quickbooks-refresh-token-five-year-hard-expiry.json +29 -0
- package/advisories/reddit-logged-out-json-403.json +25 -0
- package/advisories/salesforce-soap-login-broad-ip-range-token-required.json +30 -0
- package/advisories/salesforce-soap-login-disabled-when-unused.json +30 -0
- package/advisories/salesforce-soap-login-use-any-api-auth-required.json +31 -0
- package/advisories/shopify-admin-api-2026-01-unsupported.json +33 -0
- package/advisories/shopify-admin-api-2026-04-unsupported.json +33 -0
- package/advisories/shopify-global-catalog-rest-api-shutdown.json +24 -0
- package/advisories/shopify-non-expiring-offline-tokens-rejected.json +27 -0
- package/advisories/shopify-script-tags-stop-running.json +27 -0
- package/advisories/slack-files-upload-retired.json +28 -0
- package/advisories/stripe-checkout-session-ui-mode-values-renamed.json +53 -0
- package/advisories/twilio-conference-list-default-in-progress.json +27 -0
- package/advisories/twilio-notify-end-of-life.json +28 -0
- package/advisories/twilio-rcs-undelivered-error-code-30046.json +27 -0
- package/advisories/twilio-voice-insights-conference-participant-removed.json +28 -0
- package/advisories/x-activity-api-pascalcase-event-types-removed.json +31 -0
- package/advisories/x-self-serve-follow-writes-removed.json +27 -0
- package/advisories/x-self-serve-like-writes-removed.json +27 -0
- package/advisories/xero-accounting-transactions-scope-split.json +27 -0
- package/advisories/xero-allocations-contact-mismatch-rejected.json +27 -0
- package/advisories/xero-au-payroll-isqualifyingearnings-required.json +28 -0
- package/advisories/xero-finance-accounting-activities-decommissioned.json +28 -0
- package/advisories/xero-invoices-email-daily-limit-429.json +32 -0
- package/advisories/xero-nz-payroll-employee-tax-kiwisaverstatus-required.json +27 -0
- package/advisories/xero-organisation-class-ultra-enum.json +31 -0
- package/bin/shapi.js +4 -0
- package/dist/index.js +4206 -0
- package/dist/tree-sitter-python.wasm +0 -0
- package/package.json +52 -4
- package/recordings/github-workflow-dispatch-204-to-200.json +46 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-commerce-order-management-removed",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "Commerce Order Management API removed on all versions on 2026-10-27",
|
|
5
|
+
"summary": "Meta deprecated the Commerce Order Management API (47 endpoints, including GET /{page-id}/commerce_orders and GET /{commerce-merchant-settings-id}/commerce_orders) with no replacement. Calls on v26.0+ are blocked since 2026-07-29, and the endpoints are removed from all remaining versions on 2026-10-27. Order sub-resources (items, shipments, refunds, cancellations, payments, tax_settings) by object id go too, but only the commerce_orders list edge is matched here.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "GET",
|
|
8
|
+
"path": "/*/*/commerce_orders"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"any": true
|
|
13
|
+
},
|
|
14
|
+
"firstObserved": null,
|
|
15
|
+
"publishedNotice": {
|
|
16
|
+
"date": "2026-07-29",
|
|
17
|
+
"url": "https://developers.facebook.com/docs/graph-api/changelog/version26.0"
|
|
18
|
+
},
|
|
19
|
+
"effectiveDate": "2026-10-27",
|
|
20
|
+
"severity": "critical",
|
|
21
|
+
"migrationNote": "There is no replacement API. Stop calling commerce_orders, commerce_returns, tax_settings and the order, shipment, refund and cancellation object reads, and handle orders in Commerce Manager or your own order system. Guard any remaining calls so the error does not break sync jobs.",
|
|
22
|
+
"sources": [
|
|
23
|
+
"https://developers.facebook.com/docs/graph-api/changelog/version26.0"
|
|
24
|
+
],
|
|
25
|
+
"status": "verified"
|
|
26
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-date-format-param-removed",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "date_format query parameter returns an error from 2026-10-27",
|
|
5
|
+
"summary": "Requests that include the legacy date_format parameter return an error on Graph API v26.0+ since 2026-07-29 and on all supported versions from 2026-10-27. The same change makes pretty and debug ignored and removes ETag/304 Not Modified behaviour.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "*",
|
|
8
|
+
"path": "/**"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"query": [
|
|
13
|
+
{
|
|
14
|
+
"name": "date_format"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"firstObserved": null,
|
|
19
|
+
"publishedNotice": {
|
|
20
|
+
"date": "2026-07-29",
|
|
21
|
+
"url": "https://developers.facebook.com/docs/graph-api/changelog/version26.0"
|
|
22
|
+
},
|
|
23
|
+
"effectiveDate": "2026-10-27",
|
|
24
|
+
"severity": "critical",
|
|
25
|
+
"migrationNote": "Remove date_format from every Graph API request and parse the default ISO 8601 timestamps in your own code. While you are there, drop any reliance on If-None-Match/304 caching and on pretty or debug output.",
|
|
26
|
+
"sources": [
|
|
27
|
+
"https://developers.facebook.com/docs/graph-api/changelog/version26.0"
|
|
28
|
+
],
|
|
29
|
+
"status": "verified"
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-delivery-estimate-fields-removed",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "Delivery Estimate drops daily_outcomes_curve, budget_guardrail and estimate_dau",
|
|
5
|
+
"summary": "The daily_outcomes_curve, budget_guardrail and estimate_dau fields are removed from GET /{ad-account-id}/delivery_estimate and GET /{adset-id}/delivery_estimate responses because the service behind them was shut down. The removal applies to Marketing API v26.0 and to all remaining versions on 2026-10-27; the calls still succeed but the fields are missing.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "GET",
|
|
8
|
+
"path": "/*/*/delivery_estimate"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "field-rename",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"fields": [
|
|
13
|
+
"daily_outcomes_curve",
|
|
14
|
+
"budget_guardrail",
|
|
15
|
+
"estimate_dau"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"firstObserved": null,
|
|
19
|
+
"publishedNotice": {
|
|
20
|
+
"date": "2026-07-29",
|
|
21
|
+
"url": "https://developers.facebook.com/docs/graph-api/changelog/version26.0"
|
|
22
|
+
},
|
|
23
|
+
"effectiveDate": "2026-10-27",
|
|
24
|
+
"severity": "critical",
|
|
25
|
+
"migrationNote": "Stop requesting and reading daily_outcomes_curve, budget_guardrail and estimate_dau; treat them as absent. Meta offers no replacement, so remove any forecasting or budget UI that depends on them or derive it from the remaining estimate fields.",
|
|
26
|
+
"sources": [
|
|
27
|
+
"https://developers.facebook.com/docs/graph-api/changelog/version26.0"
|
|
28
|
+
],
|
|
29
|
+
"status": "verified"
|
|
30
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-instagram-oembed-fields-removed",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "oEmbed responses no longer return author and thumbnail fields",
|
|
5
|
+
"summary": "Since 2025-11-03, on all API versions, Instagram post oEmbed responses (GET /{version}/instagram_oembed) no longer include author_name, author_url, thumbnail_url, thumbnail_width or thumbnail_height. The same fields were removed from Facebook post and video oEmbed (oembed_post, oembed_video), and the Facebook page oEmbed endpoint was deprecated.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "GET",
|
|
8
|
+
"path": "/*/instagram_oembed"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "field-rename",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"fields": [
|
|
13
|
+
"author_name",
|
|
14
|
+
"author_url",
|
|
15
|
+
"thumbnail_url",
|
|
16
|
+
"thumbnail_width",
|
|
17
|
+
"thumbnail_height"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"firstObserved": null,
|
|
21
|
+
"publishedNotice": {
|
|
22
|
+
"date": "2025-04-08",
|
|
23
|
+
"url": "https://developers.facebook.com/docs/instagram-platform/changelog"
|
|
24
|
+
},
|
|
25
|
+
"effectiveDate": "2025-11-03",
|
|
26
|
+
"severity": "high",
|
|
27
|
+
"migrationNote": "Stop reading author and thumbnail fields from oEmbed and render the returned html instead. If you need a thumbnail or author, read them from the Instagram Graph API media object for media your app can access, and treat the oEmbed fields as absent.",
|
|
28
|
+
"sources": [
|
|
29
|
+
"https://developers.facebook.com/docs/instagram-platform/changelog",
|
|
30
|
+
"https://developers.facebook.com/docs/instagram-platform/oembed"
|
|
31
|
+
],
|
|
32
|
+
"status": "verified"
|
|
33
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-marketing-api-v24-sunset",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "Marketing API v24.0 available until 2026-11-10",
|
|
5
|
+
"summary": "Marketing API v24.0 is available until 2026-11-10, much earlier than Graph API v24.0. After that, ads calls pinned to v24.0 either fail or are auto-upgraded to the next version; endpoints that changed between versions fail. This matches ad account edges (/v24.0/act_{id}/...); calls to campaign, ad set and ad objects by numeric id on v24.0 are affected too but cannot be told apart from other Graph calls by path.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "*",
|
|
8
|
+
"path": "/v24.0/act_*/**"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"any": true
|
|
13
|
+
},
|
|
14
|
+
"firstObserved": null,
|
|
15
|
+
"publishedNotice": {
|
|
16
|
+
"date": null,
|
|
17
|
+
"url": "https://developers.facebook.com/docs/marketing-api/marketing-api-changelog/"
|
|
18
|
+
},
|
|
19
|
+
"effectiveDate": "2026-11-10",
|
|
20
|
+
"severity": "critical",
|
|
21
|
+
"migrationNote": "Move all Marketing API calls (ad accounts, campaigns, ad sets, ads, creatives, insights) to v25.0 or, better, v26.0, and re-test against the v25.0 and v26.0 changelogs (for example the Advantage+ campaign and targeting_automation changes) before 2026-11-10.",
|
|
22
|
+
"recipeId": "apply-fix",
|
|
23
|
+
"fix": {
|
|
24
|
+
"path": {
|
|
25
|
+
"from": "/v24.0/",
|
|
26
|
+
"to": "/v26.0/"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"sources": [
|
|
30
|
+
"https://developers.facebook.com/docs/marketing-api/marketing-api-changelog/",
|
|
31
|
+
"https://developers.facebook.com/documentation/ads-commerce/marketing-api/overview/versioning"
|
|
32
|
+
],
|
|
33
|
+
"status": "verified"
|
|
34
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-marketing-api-v25-sunset",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "Marketing API v25.0 available until 2027-02-23",
|
|
5
|
+
"summary": "Marketing API v25.0 is available until 2027-02-23 (Graph API v25.0 itself runs to 2028). After that, ads calls pinned to v25.0 fail or are auto-upgraded, and endpoints that changed in v26.0 fail. Meta also says the explicit targeting_automation.advantage_audience flag becomes mandatory on all versions once v25.0 is deprecated.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "*",
|
|
8
|
+
"path": "/v25.0/act_*/**"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"any": true
|
|
13
|
+
},
|
|
14
|
+
"firstObserved": null,
|
|
15
|
+
"publishedNotice": {
|
|
16
|
+
"date": null,
|
|
17
|
+
"url": "https://developers.facebook.com/docs/marketing-api/marketing-api-changelog/"
|
|
18
|
+
},
|
|
19
|
+
"effectiveDate": "2027-02-23",
|
|
20
|
+
"severity": "high",
|
|
21
|
+
"migrationNote": "Upgrade Marketing API calls to v26.0, set targeting_automation.advantage_audience to 1 or 0 explicitly on ad set targeting, and review the v26.0 changelog (poll ads, Messenger Stories, Explore placement, delivery estimate fields) before 2027-02-23.",
|
|
22
|
+
"recipeId": "apply-fix",
|
|
23
|
+
"fix": {
|
|
24
|
+
"path": {
|
|
25
|
+
"from": "/v25.0/",
|
|
26
|
+
"to": "/v26.0/"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"sources": [
|
|
30
|
+
"https://developers.facebook.com/docs/marketing-api/marketing-api-changelog/",
|
|
31
|
+
"https://developers.facebook.com/documentation/ads-commerce/marketing-api/overview/versioning",
|
|
32
|
+
"https://developers.facebook.com/docs/graph-api/changelog/version26.0"
|
|
33
|
+
],
|
|
34
|
+
"status": "verified"
|
|
35
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-page-insights-impressions-fans-removed",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "Page Insights impressions and page fans metrics removed on 2025-11-15",
|
|
5
|
+
"summary": "Since 2025-11-15, on all API versions, requesting the Page and post impressions metrics (page_impressions, page_impressions_paid, page_impressions_viral, page_impressions_nonviral, post_impressions, post_impressions_paid, post_impressions_fan, post_impressions_organic, post_impressions_viral, post_impressions_nonviral) or the fans metrics (page_fans, page_fans_locale, page_fans_city, page_fans_country, page_fan_adds, page_fan_adds_unique, page_fan_removes, page_fan_removes_unique) returns an invalid metric error. SHAPI flags calls that request one of these metrics.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "GET",
|
|
8
|
+
"path": "/*/*/insights"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"query": [
|
|
13
|
+
{
|
|
14
|
+
"name": "metric",
|
|
15
|
+
"values": [
|
|
16
|
+
"page_fans",
|
|
17
|
+
"page_fans_locale",
|
|
18
|
+
"page_fans_city",
|
|
19
|
+
"page_fans_country",
|
|
20
|
+
"page_fan_adds",
|
|
21
|
+
"page_fan_adds_unique",
|
|
22
|
+
"page_fan_removes",
|
|
23
|
+
"page_fan_removes_unique",
|
|
24
|
+
"page_impressions",
|
|
25
|
+
"page_impressions_paid",
|
|
26
|
+
"page_impressions_viral",
|
|
27
|
+
"page_impressions_nonviral",
|
|
28
|
+
"post_impressions",
|
|
29
|
+
"post_impressions_paid",
|
|
30
|
+
"post_impressions_fan",
|
|
31
|
+
"post_impressions_organic",
|
|
32
|
+
"post_impressions_viral",
|
|
33
|
+
"post_impressions_nonviral"
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"firstObserved": null,
|
|
39
|
+
"publishedNotice": {
|
|
40
|
+
"date": "2025-08-15",
|
|
41
|
+
"url": "https://developers.facebook.com/blog/post/2025/08/15/page-insights-api-updates/"
|
|
42
|
+
},
|
|
43
|
+
"effectiveDate": "2025-11-15",
|
|
44
|
+
"severity": "critical",
|
|
45
|
+
"migrationNote": "Replace page_impressions with page_media_view and post_impressions with post_media_view (use the is_from_ads or is_from_followers breakdowns for the paid, organic and fan splits), and replace page_fans/page_fans_city/page_fans_country with page_follows/page_follows_city/page_follows_country. Remove the other listed metrics; one invalid metric fails the whole insights request.",
|
|
46
|
+
"sources": [
|
|
47
|
+
"https://developers.facebook.com/blog/post/2025/08/15/page-insights-api-updates/",
|
|
48
|
+
"https://developers.facebook.com/docs/platforminsights/page/deprecated-metrics"
|
|
49
|
+
],
|
|
50
|
+
"status": "verified"
|
|
51
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-page-insights-reach-video-views-removed",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "Page Insights reach and 3-second video viewer metrics removed on 2026-06-15",
|
|
5
|
+
"summary": "By 2026-06-15, on all API versions, the Page/post reach metrics (page_impressions_unique, post_impressions_unique and their paid, viral, nonviral, organic and fan variants, the page_posts_impressions family, page_posts_served_impressions_organic_unique) and the 3-second viewer metrics (page_video_views_unique, post_video_views_unique) return an invalid metric error. SHAPI flags calls that request one of these metrics.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "GET",
|
|
8
|
+
"path": "/*/*/insights"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"query": [
|
|
13
|
+
{
|
|
14
|
+
"name": "metric",
|
|
15
|
+
"values": [
|
|
16
|
+
"page_impressions_unique",
|
|
17
|
+
"page_impressions_paid_unique",
|
|
18
|
+
"page_impressions_viral_unique",
|
|
19
|
+
"page_impressions_nonviral_unique",
|
|
20
|
+
"page_posts_impressions",
|
|
21
|
+
"page_posts_impressions_unique",
|
|
22
|
+
"page_posts_impressions_paid",
|
|
23
|
+
"page_posts_impressions_paid_unique",
|
|
24
|
+
"page_posts_impressions_organic_unique",
|
|
25
|
+
"page_posts_served_impressions_organic_unique",
|
|
26
|
+
"page_posts_impressions_viral",
|
|
27
|
+
"page_posts_impressions_viral_unique",
|
|
28
|
+
"page_posts_impressions_nonviral",
|
|
29
|
+
"page_posts_impressions_nonviral_unique",
|
|
30
|
+
"post_impressions_unique",
|
|
31
|
+
"post_impressions_paid_unique",
|
|
32
|
+
"post_impressions_fan_unique",
|
|
33
|
+
"post_impressions_organic_unique",
|
|
34
|
+
"post_impressions_viral_unique",
|
|
35
|
+
"post_impressions_nonviral_unique",
|
|
36
|
+
"page_video_views_unique",
|
|
37
|
+
"post_video_views_unique"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"firstObserved": null,
|
|
43
|
+
"publishedNotice": {
|
|
44
|
+
"date": "2026-02-18",
|
|
45
|
+
"url": "https://developers.facebook.com/blog/post/2026/02/18/introducing-graph-api-v25-and-marketing-api-v25/"
|
|
46
|
+
},
|
|
47
|
+
"effectiveDate": "2026-06-15",
|
|
48
|
+
"severity": "critical",
|
|
49
|
+
"migrationNote": "Switch reach and unique-viewer reporting to page_total_media_view_unique and post_total_media_view_unique (and page_media_view/post_media_view with is_from_ads for paid vs organic). The numbers use a different method, so do not splice them onto historical reach series, and drop metrics that have no replacement (viral/nonviral reach).",
|
|
50
|
+
"sources": [
|
|
51
|
+
"https://developers.facebook.com/docs/graph-api/reference/v22.0/insights",
|
|
52
|
+
"https://developers.facebook.com/blog/post/2026/02/18/introducing-graph-api-v25-and-marketing-api-v25/",
|
|
53
|
+
"https://developers.facebook.com/docs/platforminsights/page/deprecated-metrics",
|
|
54
|
+
"https://docs.supermetrics.com/docs/facebook-insights-field-changes-june-30-2026.md"
|
|
55
|
+
],
|
|
56
|
+
"status": "verified"
|
|
57
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-root-ids-lookup-removed",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "Root GET /?ids= multi-object lookup returns an error from 2026-10-27",
|
|
5
|
+
"summary": "Graph API dropped legacy protocol features: root requests of the form GET /?ids=a,b (or /{version}/?ids=) return an error on v26.0+ since 2026-07-29 and on all supported versions from 2026-10-27. Meta does not state the error code.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "GET",
|
|
8
|
+
"path": "/*"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"query": [
|
|
13
|
+
{
|
|
14
|
+
"name": "ids"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"firstObserved": null,
|
|
19
|
+
"publishedNotice": {
|
|
20
|
+
"date": "2026-07-29",
|
|
21
|
+
"url": "https://developers.facebook.com/docs/graph-api/changelog/version26.0"
|
|
22
|
+
},
|
|
23
|
+
"effectiveDate": "2026-10-27",
|
|
24
|
+
"severity": "critical",
|
|
25
|
+
"migrationNote": "Replace each GET /?ids=... call with one request per object, or send the per-object requests in a single batch request (POST / with a batch parameter), and merge the results in your code.",
|
|
26
|
+
"sources": [
|
|
27
|
+
"https://developers.facebook.com/docs/graph-api/changelog/version26.0"
|
|
28
|
+
],
|
|
29
|
+
"status": "verified"
|
|
30
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-v20-sunset",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "Graph API v20.0 removed; calls fall forward to the next version",
|
|
5
|
+
"summary": "Graph API v20.0 was deprecated and removed on 2026-09-24. Calls pinned to v20.0 do not fail: they are served by the next oldest usable version, so response shapes can change silently.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "*",
|
|
8
|
+
"path": "/v20.0/**"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"any": true
|
|
13
|
+
},
|
|
14
|
+
"firstObserved": null,
|
|
15
|
+
"publishedNotice": {
|
|
16
|
+
"date": null,
|
|
17
|
+
"url": "https://developers.facebook.com/docs/graph-api/changelog/versions"
|
|
18
|
+
},
|
|
19
|
+
"effectiveDate": "2026-09-24",
|
|
20
|
+
"severity": "high",
|
|
21
|
+
"migrationNote": "Move the version segment to a supported version (v22.0 or later) and re-test the fields you read.",
|
|
22
|
+
"recipeId": "apply-fix",
|
|
23
|
+
"fix": {
|
|
24
|
+
"path": {
|
|
25
|
+
"from": "/v20.0/",
|
|
26
|
+
"to": "/v26.0/"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"sources": [
|
|
30
|
+
"https://developers.facebook.com/docs/graph-api/changelog/versions"
|
|
31
|
+
],
|
|
32
|
+
"status": "verified"
|
|
33
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta-graph-v21-sunset",
|
|
3
|
+
"provider": "meta-graph",
|
|
4
|
+
"title": "Graph API v21.0 removed on 2027-01-21",
|
|
5
|
+
"summary": "Graph API v21.0 is deprecated and removed on 2027-01-21. After that, calls pinned to v21.0 are served by the next oldest usable version without an error.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "*",
|
|
8
|
+
"path": "/v21.0/**"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"any": true
|
|
13
|
+
},
|
|
14
|
+
"firstObserved": null,
|
|
15
|
+
"publishedNotice": {
|
|
16
|
+
"date": null,
|
|
17
|
+
"url": "https://developers.facebook.com/docs/graph-api/changelog/versions"
|
|
18
|
+
},
|
|
19
|
+
"effectiveDate": "2027-01-21",
|
|
20
|
+
"severity": "high",
|
|
21
|
+
"migrationNote": "Move the version segment to a supported version (v22.0 or later) and re-test the fields you read.",
|
|
22
|
+
"recipeId": "apply-fix",
|
|
23
|
+
"fix": {
|
|
24
|
+
"path": {
|
|
25
|
+
"from": "/v21.0/",
|
|
26
|
+
"to": "/v26.0/"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"sources": [
|
|
30
|
+
"https://developers.facebook.com/docs/graph-api/changelog/versions"
|
|
31
|
+
],
|
|
32
|
+
"status": "verified"
|
|
33
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "openai-assistants-api-shutdown",
|
|
3
|
+
"provider": "openai",
|
|
4
|
+
"title": "Assistants API removed on 2026-08-26",
|
|
5
|
+
"summary": "OpenAI removed the Assistants API on 2026-08-26, one year after its 2025-08-26 deprecation notice. Calls to the assistants endpoints, and to the threads, messages and runs endpoints that go with them (/v1/threads/**), no longer work. The replacement is the Responses API plus the Conversations API.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "*",
|
|
8
|
+
"path": "/v1/assistants/**"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"any": true
|
|
13
|
+
},
|
|
14
|
+
"firstObserved": null,
|
|
15
|
+
"publishedNotice": {
|
|
16
|
+
"date": "2025-08-26",
|
|
17
|
+
"url": "https://developers.openai.com/api/docs/deprecations"
|
|
18
|
+
},
|
|
19
|
+
"effectiveDate": "2026-08-26",
|
|
20
|
+
"severity": "critical",
|
|
21
|
+
"migrationNote": "Move assistants to prompts (configuration created in the dashboard), threads to Conversations, and runs to Responses (send input items or a conversation id to the Responses API), and run the tool-call loop in your own code. Thread messages can no longer be fetched from the API, so read history from your own stored copy.",
|
|
22
|
+
"sources": [
|
|
23
|
+
"https://developers.openai.com/api/docs/deprecations",
|
|
24
|
+
"https://developers.openai.com/api/docs/assistants/migration"
|
|
25
|
+
],
|
|
26
|
+
"status": "verified"
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "openai-audio-translations-endpoint-shutdown",
|
|
3
|
+
"provider": "openai",
|
|
4
|
+
"title": "/v1/audio/translations shuts down on 2027-02-26",
|
|
5
|
+
"summary": "OpenAI deprecated the audio translations endpoint on 2026-08-26 and shuts it down on 2027-02-26, together with whisper-1 and the gpt-4o transcribe models. After that date every call to POST /v1/audio/translations fails.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "POST",
|
|
8
|
+
"path": "/v1/audio/translations"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"any": true
|
|
13
|
+
},
|
|
14
|
+
"firstObserved": null,
|
|
15
|
+
"publishedNotice": {
|
|
16
|
+
"date": "2026-08-26",
|
|
17
|
+
"url": "https://developers.openai.com/api/docs/deprecations"
|
|
18
|
+
},
|
|
19
|
+
"effectiveDate": "2027-02-26",
|
|
20
|
+
"severity": "high",
|
|
21
|
+
"migrationNote": "Replace calls to POST /v1/audio/translations with the Realtime translations interface (v1/realtime/translations) that OpenAI names as the replacement, and move transcription off whisper-1 to gpt-live-transcribe or gpt-transcribe before 2027-02-26.",
|
|
22
|
+
"sources": [
|
|
23
|
+
"https://developers.openai.com/api/docs/deprecations",
|
|
24
|
+
"https://developers.openai.com/api/reference/resources/audio"
|
|
25
|
+
],
|
|
26
|
+
"status": "verified"
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "openai-evals-api-shutdown",
|
|
3
|
+
"provider": "openai",
|
|
4
|
+
"title": "Evals API shuts down on 2026-11-30",
|
|
5
|
+
"summary": "OpenAI is retiring the Evals platform: existing evals become read-only on 2026-10-31, and the Evals dashboard and API shut down on 2026-11-30. After that, calls to /v1/evals and its runs fail.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "*",
|
|
8
|
+
"path": "/v1/evals/**"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"any": true
|
|
13
|
+
},
|
|
14
|
+
"firstObserved": null,
|
|
15
|
+
"publishedNotice": {
|
|
16
|
+
"date": "2026-06-03",
|
|
17
|
+
"url": "https://developers.openai.com/api/docs/deprecations"
|
|
18
|
+
},
|
|
19
|
+
"effectiveDate": "2026-11-30",
|
|
20
|
+
"severity": "critical",
|
|
21
|
+
"migrationNote": "Export the eval definitions and results you need before 2026-11-30, stop creating or updating evals (they are read-only from 2026-10-31), and move eval runs to Promptfoo following OpenAI's \"Moving from OpenAI Evals to Promptfoo\" guide.",
|
|
22
|
+
"sources": [
|
|
23
|
+
"https://developers.openai.com/api/docs/deprecations",
|
|
24
|
+
"https://developers.openai.com/api/reference/resources/evals"
|
|
25
|
+
],
|
|
26
|
+
"status": "verified"
|
|
27
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "quickbooks-companyinfo-neoenabled-removed",
|
|
3
|
+
"provider": "quickbooks",
|
|
4
|
+
"title": "CompanyInfo no longer returns the NeoEnabled NameValue",
|
|
5
|
+
"summary": "Since 2026-01-27 in production (2025-12-10 in sandbox), the CompanyInfo entity no longer includes the NeoEnabled attribute in its NameValue list. Code that looks up NeoEnabled gets no entry, while the API reference samples still show it.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "GET",
|
|
8
|
+
"path": "/v3/company/{realmId}/companyinfo/{companyId}"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "field-rename",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"fields": [
|
|
13
|
+
"NeoEnabled"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"firstObserved": null,
|
|
17
|
+
"publishedNotice": {
|
|
18
|
+
"date": "2025-12-01",
|
|
19
|
+
"url": "https://medium.com/intuitdev/upcoming-changes-to-apis-and-tools-that-may-impact-your-application-df4680ae3535"
|
|
20
|
+
},
|
|
21
|
+
"effectiveDate": "2026-01-27",
|
|
22
|
+
"severity": "low",
|
|
23
|
+
"migrationNote": "Treat a missing NeoEnabled entry in CompanyInfo.NameValue as normal, and stop deciding behavior from it. The same applies to CompanyInfo returned by the query endpoint.",
|
|
24
|
+
"sources": [
|
|
25
|
+
"https://medium.com/intuitdev/upcoming-changes-to-apis-and-tools-that-may-impact-your-application-df4680ae3535",
|
|
26
|
+
"https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/companyinfo"
|
|
27
|
+
],
|
|
28
|
+
"status": "verified"
|
|
29
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "quickbooks-minorversion-below-75-ignored",
|
|
3
|
+
"provider": "quickbooks",
|
|
4
|
+
"title": "Minor versions below 75 are silently answered as minor version 75",
|
|
5
|
+
"summary": "Since 2025-08-01 the QuickBooks Online Accounting API ignores any minorversion below 75 and responds with minor version 75 data, without an error. Code pinned to an older minor version receives a different response shape with no signal.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "*",
|
|
8
|
+
"path": "/v3/company/{realmId}/**"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "version-sunset",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"query": [
|
|
13
|
+
{
|
|
14
|
+
"name": "minorversion",
|
|
15
|
+
"below": 75
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"firstObserved": "2025-08-01",
|
|
20
|
+
"publishedNotice": {
|
|
21
|
+
"date": null,
|
|
22
|
+
"url": "https://blogs.intuit.com/?p=34635"
|
|
23
|
+
},
|
|
24
|
+
"effectiveDate": "2025-08-01",
|
|
25
|
+
"severity": "high",
|
|
26
|
+
"migrationNote": "Set minorversion=75 (or remove it) and re-test parsing against minor version 75 responses.",
|
|
27
|
+
"recipeId": "apply-fix",
|
|
28
|
+
"fix": {
|
|
29
|
+
"query": {
|
|
30
|
+
"name": "minorversion",
|
|
31
|
+
"value": "75"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"sources": [
|
|
35
|
+
"https://blogs.intuit.com/?p=34635",
|
|
36
|
+
"https://www.apideck.com/blog/ai-built-accounting-integrations-maintenance",
|
|
37
|
+
"https://docs.codat.io/updates/250401-qbo-minor-versions-update"
|
|
38
|
+
],
|
|
39
|
+
"status": "verified"
|
|
40
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "quickbooks-refresh-token-five-year-hard-expiry",
|
|
3
|
+
"provider": "quickbooks",
|
|
4
|
+
"title": "Refresh tokens hard-expire after five years, first ones in February 2027",
|
|
5
|
+
"summary": "Intuit refresh tokens now have a maximum lifetime of five years, even if they are used regularly. For apps on restricted or granular scopes, tokens issued from February 2022 start expiring in February 2027. For com.quickbooks.accounting and com.quickbooks.payments, tokens issued from October 2023 start expiring in October 2028. Intuit gives only the month, so the effective date here is the first day of that month.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "POST",
|
|
8
|
+
"path": "/oauth2/v1/tokens/bearer"
|
|
9
|
+
},
|
|
10
|
+
"changeClass": "auth",
|
|
11
|
+
"trigger": {
|
|
12
|
+
"any": true
|
|
13
|
+
},
|
|
14
|
+
"firstObserved": null,
|
|
15
|
+
"publishedNotice": {
|
|
16
|
+
"date": "2025-11-12",
|
|
17
|
+
"url": "https://medium.com/intuitdev/important-changes-to-refresh-token-policy-8443779d40db"
|
|
18
|
+
},
|
|
19
|
+
"effectiveDate": "2027-02-01",
|
|
20
|
+
"severity": "high",
|
|
21
|
+
"migrationNote": "On refresh, send x_refresh_token_hard_expires_in=true and store the returned x_refresh_token_hard_expires_in (seconds left in the five-year lifetime) alongside the token. Treat invalid_grant from /oauth2/v1/tokens/bearer as a disconnect that needs the user to reconnect, not as a retryable error. Prompt users to re-authorize before the hard expiry, and set the Reconnect URL in the developer portal app settings.",
|
|
22
|
+
"sources": [
|
|
23
|
+
"https://medium.com/intuitdev/important-changes-to-refresh-token-policy-8443779d40db",
|
|
24
|
+
"https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0",
|
|
25
|
+
"https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/faq",
|
|
26
|
+
"https://developer.intuit.com/app/developer/qbo/docs/release-notes/general-release-notes"
|
|
27
|
+
],
|
|
28
|
+
"status": "unverified"
|
|
29
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "reddit-logged-out-json-403",
|
|
3
|
+
"provider": "reddit",
|
|
4
|
+
"title": "Logged-out .json endpoints return 403",
|
|
5
|
+
"summary": "Unauthenticated requests to Reddit's public .json listing endpoints (for example /r/{subreddit}/top.json) started returning 403 Forbidden around 2026-05-30. OAuth (oauth.reddit.com) and logged-in access were reported as unaffected. No primary Reddit announcement was found.",
|
|
6
|
+
"endpoint": {
|
|
7
|
+
"method": "GET",
|
|
8
|
+
"path": "/**/*.json",
|
|
9
|
+
"hosts": ["reddit.com", "www.reddit.com", "old.reddit.com"]
|
|
10
|
+
},
|
|
11
|
+
"changeClass": "auth",
|
|
12
|
+
"trigger": {
|
|
13
|
+
"any": true
|
|
14
|
+
},
|
|
15
|
+
"firstObserved": "2026-05-30",
|
|
16
|
+
"publishedNotice": null,
|
|
17
|
+
"effectiveDate": "2026-05-30",
|
|
18
|
+
"severity": "high",
|
|
19
|
+
"migrationNote": "Move to an approved OAuth app and call oauth.reddit.com with a bearer token.",
|
|
20
|
+
"sources": [
|
|
21
|
+
"https://dev.to/tonywangca/why-reddit-blocked-unauthenticated-json-in-2026-and-how-to-still-get-reddit-data-58b9",
|
|
22
|
+
"https://bigideasdb.com/reddit-json-403-forbidden"
|
|
23
|
+
],
|
|
24
|
+
"status": "unverified"
|
|
25
|
+
}
|