{"templateId":"markdown","versions":[{"version":"2.1-test","label":"2.1 (TEST)","link":"/products/liveidplus/2.1-test/enterprise/get-started/v1-to-v2-migration","default":false,"active":true,"folderId":"ed500da1"},{"version":"latest","label":"2.0 (latest)","link":"/products/liveidplus/latest/enterprise/get-started/v1-to-v2-migration","default":true,"active":false,"folderId":"ed500da1"}],"sharedDataIds":{"sidebar":"sidebar-products/liveidplus/@2.1-test/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Migrating from API v1 to v2","description":"Integration and usage documentation.","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"migrating-from-api-v1-to-v2","__idx":0},"children":["Migrating from API v1 to v2"]},{"$$mdtype":"Tag","name":"div","attributes":{"style":{"backgroundColor":"rgba(255, 10, 10, 0.2)","padding":"10px","border":"1px solid"}},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["DEPRECATION NOTICE:"]}," For security reasons, the v1 API endpoints have been deprecated and will be shut down in the upcoming months:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["15/10/2026"]}," — TEST environment"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["15/01/2027"]}," — PRODUCTION environment"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All integrations must migrate to the v2 endpoints before these dates."]}]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-the-deprecation-rollout-works","__idx":1},"children":["How the Deprecation Rollout Works"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before the sunset date, calls to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/api/v1/*"]}," endpoints keep working, but a random sample of requests receives an early warning instead of the normal response:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response:"]}," HTTP ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["410 Gone"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{ \"error\": \"API_DEPRECATED\", \"message\": \"...\", \"sunsetDate\": \"...\" }"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sample rate:"]}," 10% of requests, increasing over time"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Headers on every v1 response"]}," (RFC 8594), even when the request succeeds:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Deprecation: true\nSunset: Thu, 15 Oct 2026 23:59:59 GMT\nLink: <https://your-host/api/v2/conferenceData>; rel=\"successor-version\"\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After the sunset date for your environment, ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["every"]}," call to the v1 endpoint returns the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["410"]}," error. Do not rely on the 90%-success window — treat any ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Deprecation: true"]}," header as a signal to migrate that call immediately."]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"endpoint-mapping","__idx":2},"children":["Endpoint Mapping"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"v1 Endpoint"},"children":["v1 Endpoint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"v2 Endpoint"},"children":["v2 Endpoint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ALL /api/v1/conferenceData"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/v2/conferenceData"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Identical behavior. v1 also accepted POST; v2 is GET-only."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/getAuditData"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/v2/getAuditData"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Behavior changed"]}," — see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"#retrieving-audit-data-behavior-change"},"children":["Retrieving Audit Data"]}," below."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELETE /api/v1/deleteAuditData"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELETE /api/v2/deleteAuditData"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Identical behavior, no changes required."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ALL /api/v1/checkStatus"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/service/checkStatus"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Moved out of the versioned namespace into ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["service"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For full parameter and response references, see the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/liveidplus/2.1-test/enterprise/developer-documentation/api-definition/v2"},"children":["v2 API definitions"]}," and ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/liveidplus/2.1-test/enterprise/get-started/data-retrieval"},"children":["Data Retrieval"]},"."]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"token-authentication-header-only","__idx":3},"children":["Token Authentication: Header Only"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In v1, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conferenceData"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getAuditData"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deleteAuditData"]}," accepted the JWT token as a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token"]}," query/body parameter as a fallback when no header was present. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["This fallback is not supported for the v2 endpoints"]}," — the token must always be passed as a header:"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"retrieving-audit-data-behavior-change","__idx":4},"children":["Retrieving Audit Data (behavior change)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is the endpoint most likely to break silently during migration, since the two versions respond differently by default."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["v1"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getAuditData"]}," always streams the ZIP file directly in the response body (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["application/zip"]},"). It also accepted ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," in addition to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["v2"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getAuditData"]}," by default returns a JSON payload with a presigned S3 URL to the ZIP file. Use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["direct"]}," parameter to control this:"]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"direct value"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["direct"]}," value"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"v2 Response"},"children":["v2 Response"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"0\""]}," (default)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["200 OK"]}," with JSON: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{ \"success\": true, \"url\": \"https://s3-presigned-url...\" }"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"1\""]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["302"]}," redirect straight to the ZIP file (matches v1 behavior)"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To reproduce the exact v1 behavior with the v2 endpoint:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /api/v2/getAuditData?idConference=<id>&av=1&direct=1\nAuthorization: Bearer <token>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your integration parses the response as a raw ZIP stream, either add ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["direct=1"]},", or switch your client to first read the JSON ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["url"]}," field and then download the file from that presigned URL. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["The latter is recommended, since it avoids holding the HTTP connection open for large video-inclusive archives."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," requests are no longer supported on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getAuditData"]}," in v2 — switch to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}," with query parameters."]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"conferencedata-and-deleteauditdata","__idx":5},"children":["conferenceData and deleteAuditData"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conferenceData"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deleteAuditData"]}," have identical request/response contracts between v1 and v2 — only the URL prefix changes, from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/api/v1/"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/api/v2/"]},". For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conferenceData"]},", drop any ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," usage in favor of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]},", since v2 only registers the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]}," method."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Authorization: Bearer <jwt_token>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Passing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["?token=<jwt_token>"]}," in the query string (or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token"]}," in the request body) against ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/api/v2/conferenceData"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/api/v2/getAuditData"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/api/v2/deleteAuditData"]}," is not a supported integration pattern and must be migrated to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization"]}," header before cutting over. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/liveidplus/2.1-test/enterprise/get-started/authentication"},"children":["Authentication"]}," for details on obtaining and using the token."]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"checkstatus","__idx":6},"children":["checkStatus"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkStatus"]}," has moved to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["service"]}," tag:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /api/service/checkStatus\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The request has no parameters and the response shape (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]},", optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]},") is unchanged."]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"migration-checklist","__idx":7},"children":["Migration Checklist"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Search your integration code for any ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/api/v1/"]}," URL and replace the prefix with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/api/v2/"]}," (or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/api/service/"]}," for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkStatus"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," calls to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conferenceData"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getAuditData"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If any call to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conferenceData"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getAuditData"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deleteAuditData"]}," passes the token via ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["?token="]}," (query) or a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token"]}," body field, move it to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization: Bearer <token>"]}," header."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If you consume ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getAuditData"]}," as a raw ZIP stream, add ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["&direct=1"]}," to the request, or update the client to follow the presigned ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["url"]}," returned by the default JSON response."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Deploy the change to TEST and confirm no response carries a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Deprecation: true"]}," header."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Monitor for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["410 API_DEPRECATED"]}," responses in TEST leading up to 15/10/2026, then repeat the validation in PRODUCTION before 15/01/2027."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For authentication requirements common to both versions, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/products/liveidplus/2.1-test/enterprise/get-started/authentication"},"children":["Authentication"]},"."]}]},"headings":[{"value":"Migrating from API v1 to v2","id":"migrating-from-api-v1-to-v2","depth":1},{"value":"How the Deprecation Rollout Works","id":"how-the-deprecation-rollout-works","depth":2},{"value":"Endpoint Mapping","id":"endpoint-mapping","depth":2},{"value":"Token Authentication: Header Only","id":"token-authentication-header-only","depth":2},{"value":"Retrieving Audit Data (behavior change)","id":"retrieving-audit-data-behavior-change","depth":2},{"value":"conferenceData and deleteAuditData","id":"conferencedata-and-deleteauditdata","depth":2},{"value":"checkStatus","id":"checkstatus","depth":2},{"value":"Migration Checklist","id":"migration-checklist","depth":2}],"frontmatter":{"outline":"deep","title":"Migrating from API v1 to v2","scope":"vertical-solutions","product":"LiveID+","category":"get-started","version":"2.0","description":"Guide to migrating LiveID+ integrations from the deprecated v1 API endpoints to v2, including endpoint mapping, behavioral differences, and the deprecation timeline.","keywords":["v1 to v2 migration","API deprecation","LiveID+","conferenceData","getAuditData","deleteAuditData"],"seo":{"title":"Migrating from API v1 to v2"}},"lastModified":"2026-07-08T13:59:05.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/liveidplus/2.1-test/enterprise/get-started/v1-to-v2-migration","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}