{"id":15643,"date":"2024-06-12T06:11:43","date_gmt":"2024-06-12T06:11:43","guid":{"rendered":"https:\/\/csdev.site\/creole_new\/?p=15643"},"modified":"2024-06-12T06:11:47","modified_gmt":"2024-06-12T06:11:47","slug":"unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval","status":"publish","type":"post","link":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/","title":{"rendered":"Unlocking the Power of Google Drive: A Guide to File Storage and Retrieval"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"015b\"><strong><em>Introduction<\/em><\/strong>&nbsp;:<\/h2>\n\n\n\n<p id=\"bf79\">Welcome brave coder, In this comprehensive guide we will delve into utilizing the Google Drive API to store and retrieve files programmatically. From setting up authentication to performing CRUD (Create, Read, Update, Delete) operations on files, I will walk you through each stage of the process. First we will do the necessary setup required for using google cloud api and then do the coding part .<\/p>\n\n\n\n<p id=\"637d\">You will see number of blogs and videos for implementating google drive api so everything is common in that implementation except authentication. I have implementated using JWT authentication which does not required to authenticate token every time , instead we will use private key to be able to communicate with api.<\/p>\n\n\n\n<p id=\"808d\">So for easy understanding of flow I have divided this implementation into two parts :-<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p id=\"883a\"><strong>PART \u2014 1<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p id=\"671d\">Let\u2019s start with setting up App on google cloud console and then enable google drive api to be able to use it.<\/p>\n\n\n\n<p id=\"6e21\"><strong>step-1 ) Login to Google Cloud Console and enable google drive api.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"EnableDriveApi\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/syzRbPwuFnM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p id=\"363e\"><strong>step-2 ) Create service account for your project and generate credentials to be able to connect it with api.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"serviceAccount Key\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/HS6RWYBms0E?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p id=\"ccb3\"><strong>step-3) Create new folder in your google drive and share that folder to service account email.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"add email to drive\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/YvOkK_xRTyQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p id=\"ba3d\"><strong>PART \u2014 2<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p id=\"1a36\">Now that we are done with initial setup of google cloud app and api now we can jump into coding part to be able to use google api.<\/p>\n\n\n\n<p id=\"1d5e\">Let\u2019s first install npm package for using google services<\/p>\n\n\n\n<p id=\"1d5e\">npm install googleapis<\/p>\n\n\n\n<p id=\"3f58\">We will be using&nbsp;<strong>Google Auth Library&nbsp;<\/strong>for connecting our nodejs app with google api. Below code will JWT (JSON Web Token) client for authentication with the Google Drive API in a Node.js environment.<\/p>\n\n\n\n<p id=\"35e1\">We will import necessary variables from env. Then we create jwt auth using&nbsp;<code>google.auth.jwt()<\/code>. After that we create new instance of the Google Drive API using the&nbsp;<code>google.drive()<\/code>&nbsp;method.<\/p>\n\n\n\n<p class=\"code\" id=\"35e1\"><\/p>\n\n\n\n<pre class=\"wp-block-code\">\n<div class=\"code\">\n<code>import { google } from 'googleapis'\n\/\/ import necessary credentials from .env file\nconst client_email = process.env.GOOGLE_DRIVE_SERVICE_EMAIL;\nconst private_key = process.env.GOOGLE_DRIVE_PRIVATE_KEY;\nconst SCOPES = &#91;\"https:\/\/www.googleapis.com\/auth\/drive.file\"];\nconst jwtClient = new google.auth.JWT(\nclient_email,\nnull!,\nprivate_key,\nSCOPES\n);\njwtClient.authorize();\nconst drive = google.drive({ version: \"v3\", auth: jwtClient });<\/code>\n<\/div>\n<\/pre>\n\n\n\n<p id=\"d63c\">In the part-1 we have generated key from our service account, from this we will get client email and private key. This key will be in JSON file as shown below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n<div class=\"code\">\n{\n  \"type\": \"service_account\",\n  \"project_id\": \"oceanic-hold-418705\",\n  \"private_key_id\": \"670794b59e1320481635618afab41118b8fc4f19\",\n  \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVSSDdEsVH5YW\\n88hfLUxTlycxxU6xIuWeCNzFlIcOpj8oaR13bckJmkkpHlqson6XlaKQHnQW5BPR\\naGmX4K++oIQbqEPkjbeHkHjPV4oZ+v0XosmLXXbdu3EkOvBblT+rAiHe8iuBuVbI\\nJAAtKv\/\/3LnX1NkSyg1PDu2jsYGYBko\/gF3+CulQR9J5H5RyRk5cS5XgX4L\/2KoW\\nuIcrNfYHSAAQNbFVU9auxc79p6H\/CsgFoYduBJgk3+POVTsefyhrrb5WXtoY9RvX\\nIlLDT1r1ecbY2M5EOgSkhmgIyOPpzCC6lBx3XopgWnq8Jaq4nW6i6Lvhgw3uINbc\\n\/uHLaXPlAgMBAAECggEAERII7eSHinGOIM9U6ceSa38FLSTXr9gGLI7ZWC81adPh\\ndPQ3\/+M1B95mhEICeAbQjKcsLNbx+DY0EYKWtGUqwVnxuTpuZbnfAfKqk4K+xCY2\\nussR7KN56+1B9hAGRdrS3rZMBDKfsf93xup8QTc2xsZVTAQazVlVAdddTX5r+gLT\\n5WSKeTLb0UClPUKoEgkkBFYyPQX74T8CEAPi+WtEzpTyaYORTHjvQtxFmVuV8f++\\nDHUX+wX6EY\/Z3B05Oq9b+CuFApsML43HAit9OBM5HJxMeMBVhE7670PNQVZAnmQE\\nMfc8rx4v0lS8rjucdHXqavH3KjpxhuNb\/F3nbx5gQQKBgQD\/QpnHdmKtDh80RBd6\\nqjhJnMaOlky2m8vppJadjAcV5nnQpivyBGFd29d9V+UQR88EBmA7m3neoYnnLyC5\\nI7aunX5anI+oDc30ISZKt8\/KAH+LQzBmlTTdM7iLYf3sZem1h9+jpKwbVcK0D7P\/\\nn6PI1FmvNhFMenj0DkfgVc1EOQKBgQDQ77jso28rwi8sXswpMbvspp\/jYbVRVnfz\\nsUDBzQhADUWCV4rOF7q1SDoYjcWnSI2qDcnPAsnKaTcfbJ7xiXxcFJLfeh3RJRai\\nOyg0fwjmrflStAjJGFokYMBMV0yKyrH0r4m6BZHH+R5CSgjaGVbB5HhBxHF7Nvl1\\njkRpPablDQKBgF9E8Dgtyy5jsunC8DBsD44J4WGeXwtYooaVU1GBzbMyzgw9uPEf\\nCWgKgSbbAzdMVctexdP5d0bMa7fJMyFmXuxVA6+19zf1zwRqyuvgJsFx5iiH7yya\\nS5yzjREYhbkRYGTMTX+6GjIpk\/24Tqn9Xxe5ia+HMnWk0DfmjJUB8RahAoGBAIlE\\nxfjqk1JrfLSo\/3cdDrs26ZrpCcgLiDlZvhLVktMKJR2ySCaI3ojVkB2rnyz9dN1B\\nu9G+ojbSk32YzoAf9M1GUwxx3X8X39vsA8khoQZ1THWyhIch8a8uxYgiXs5cxzfb\\n0B+gIxv\/poqku1YXCbHPWdbTqj7qalB6jKWb9LdNAoGBAOU58VG\/p5F68yYAikUS\\nFn7BMIOlO+cQ8lVh8AenrRBcpxhDHDLATozzz7bKIJtRsPJOnWpUaX2pBqgxHY8l\\nkt59o6rVwL0yhIwQI5VI7Kk74NkFwms7pIEPjABoJ0m1xwmPi+lMEE8gyGwSNqjv\\ntpUtpE7TCRHpnXNpn6+VdUvq\\n-----END PRIVATE KEY-----\\n\",\n  \"client_email\": \"demogoogledrive@oceanic-hold-418705.iam.gserviceaccount.com\",\n  \"client_id\": \"107363819391282120386\",\n  \"auth_uri\": \"https:\/\/accounts.google.com\/o\/oauth2\/auth\",\n  \"token_uri\": \"https:\/\/oauth2.googleapis.com\/token\",\n  \"auth_provider_x509_cert_url\": \"https:\/\/www.googleapis.com\/oauth2\/v1\/certs\",\n  \"client_x509_cert_url\": \"https:\/\/www.googleapis.com\/robot\/v1\/metadata\/x509\/demogoogledrive%40oceanic-hold-418705.iam.gserviceaccount.com\",\n  \"universe_domain\": \"googleapis.com\"\n}<\/code><\/div><\/pre>\n\n\n\n<p id=\"cd1c\">Let see now how to upload file to folder which we have created in our drive.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"98a2\"><strong>Upload files to drive<\/strong><\/h2>\n\n\n\n<p id=\"9d21\">Set file name and give folder id in which we want to store file. If everything works as expected, you will see the File ID of the uploaded file printed in the console. <\/p>\n\n\n\n<div class=\"code\">\n<pre class=\"wp-block-code\"><code>\ntry {\n    const fileMetadata = {\n      name: \"my_sales\", \/\/ Name of the file you want to upload to google drive\n      parents: &#91;\"1f-1aP8fYFCjDxh4t4atVfe6brDpn0kc0\"], \/\/ id of the folder in google drive\n    };\n    const fileResponse = await drive.files.create({\n      requestBody: fileMetadata,\n      media: {\n        mimeType: \"application\/pdf\",\n        body: fs.createReadStream(`.\/src\/files\/upload\/${filename}`), \/\/ give path to file where it is located\n      },\n      fields: \"id\",\n    });\n    const updateuserdata = await updateresumedetails(filename, email);\n    console.log(\"File uploaded successfully. File ID:\", fileResponse.data.id);\n  } \n  catch (error){\n    console.error(\"Error uploading file:\", error.message);\n  }<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"9d21\"><strong>Retrive files from drive<\/strong><\/h2>\n\n\n\n<div class=\"code\">\n<pre class=\"wp-block-code\"><code>const folder_id = \"1f-1aP8fYFCHDxh4t4atVde6brDpn0kc0\";\n  const get = await drive.files.list({\n    q: `  '${folder_id}' in parents and name='${resumeid}'`,\n    fields: \" \",\n  });\n\n  await drive.permissions.create({\n    fileId: get.data.files&#91;0].id,\n    requestBody: {\n      role: \"reader\",\n      type: \"anyone\",\n    },\n  });\n  const returndata = await drive.files.get(\n    {\n      fileId: get.data.files&#91;0].id,\n      alt: \"media\",\n      fields: 'webViewLink , webContentLink'\n    }\n  );<\/code><\/pre>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong><em>Conclusion<\/em><\/strong><\/h3>\n\n\n\n<p id=\"34f0\"><em>the provided code snippet demonstrates how to authenticate and authorize access to the Google Drive API using a JWT (JSON Web Token) client in a Node.js environment. By initializing the JWT client with the necessary credentials and scopes, authorizing it to obtain an access token, and then creating a Drive API client with the authorized JWT client, developers cean securely interact with Google Drive services within their applications. This streamlined approach ensures secure access to Google Drive resources while maintaining the flexibility and scalability required for various development scenarios.<\/em><\/p>\n\n\n\n<p id=\"5f81\"><strong><em>references :<\/em><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developers.google.com\/drive\/api\/quickstart\/nodejs\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/developers.google.com\/drive\/api\/quickstart\/nodejs<\/a><a href=\"https:\/\/medium.com\/@bharat.raj_50972?source=post_page-----251a294cc6fd--------------------------------\"><\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introduction&nbsp;: Welcome brave coder, In this comprehensive guide we will delve into utilizing the Google Drive API to store and retrieve files programmatically. From setting up authentication to performing CRUD (Create, Read, Update, Delete) operations on files, I will walk you through each stage of the process. First we will do the necessary setup required [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":15696,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"class_list":["post-15643","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","cs-tags-cloud"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Unlock Google Drive API: Guide to File Management<\/title>\n<meta name=\"description\" content=\"Learn to set up Google Drive API with JWT authentication and perform file operations in Node.js. Step-by-step guide to streamline your Google Drive integration.\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Unlock Google Drive API: Guide to File Management\" \/>\n<meta property=\"og:description\" content=\"Learn to set up Google Drive API with JWT authentication and perform file operations in Node.js. Step-by-step guide to streamline your Google Drive integration.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/\" \/>\n<meta property=\"og:site_name\" content=\"Creole Studios\" \/>\n<meta property=\"article:published_time\" content=\"2024-06-12T06:11:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-12T06:11:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/csdev.site\/creole_new\/wp-content\/uploads\/2024\/06\/Unlocking-the-Power-of-Google-Drive_-A-Guide-to-File-Storage-and-Retrieval.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Bharatsinh Raj\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bharatsinh Raj\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Unlock Google Drive API: Guide to File Management","description":"Learn to set up Google Drive API with JWT authentication and perform file operations in Node.js. Step-by-step guide to streamline your Google Drive integration.","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Unlock Google Drive API: Guide to File Management","og_description":"Learn to set up Google Drive API with JWT authentication and perform file operations in Node.js. Step-by-step guide to streamline your Google Drive integration.","og_url":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/","og_site_name":"Creole Studios","article_published_time":"2024-06-12T06:11:43+00:00","article_modified_time":"2024-06-12T06:11:47+00:00","og_image":[{"width":800,"height":600,"url":"https:\/\/csdev.site\/creole_new\/wp-content\/uploads\/2024\/06\/Unlocking-the-Power-of-Google-Drive_-A-Guide-to-File-Storage-and-Retrieval.webp","type":"image\/webp"}],"author":"Bharatsinh Raj","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Bharatsinh Raj","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/#article","isPartOf":{"@id":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/"},"author":{"name":"Bharatsinh Raj","@id":"https:\/\/csdev.site\/creole_new\/#\/schema\/person\/b43e9f2e6aca9f20d75a577d5bb01b37"},"headline":"Unlocking the Power of Google Drive: A Guide to File Storage and Retrieval","datePublished":"2024-06-12T06:11:43+00:00","dateModified":"2024-06-12T06:11:47+00:00","mainEntityOfPage":{"@id":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/"},"wordCount":526,"publisher":{"@id":"https:\/\/csdev.site\/creole_new\/#organization"},"image":{"@id":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/#primaryimage"},"thumbnailUrl":"https:\/\/csdev.site\/creole_new\/wp-content\/uploads\/2024\/06\/Unlocking-the-Power-of-Google-Drive_-A-Guide-to-File-Storage-and-Retrieval.webp","inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/","url":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/","name":"Unlock Google Drive API: Guide to File Management","isPartOf":{"@id":"https:\/\/csdev.site\/creole_new\/#website"},"primaryImageOfPage":{"@id":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/#primaryimage"},"image":{"@id":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/#primaryimage"},"thumbnailUrl":"https:\/\/csdev.site\/creole_new\/wp-content\/uploads\/2024\/06\/Unlocking-the-Power-of-Google-Drive_-A-Guide-to-File-Storage-and-Retrieval.webp","datePublished":"2024-06-12T06:11:43+00:00","dateModified":"2024-06-12T06:11:47+00:00","description":"Learn to set up Google Drive API with JWT authentication and perform file operations in Node.js. Step-by-step guide to streamline your Google Drive integration.","breadcrumb":{"@id":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/#primaryimage","url":"https:\/\/csdev.site\/creole_new\/wp-content\/uploads\/2024\/06\/Unlocking-the-Power-of-Google-Drive_-A-Guide-to-File-Storage-and-Retrieval.webp","contentUrl":"https:\/\/csdev.site\/creole_new\/wp-content\/uploads\/2024\/06\/Unlocking-the-Power-of-Google-Drive_-A-Guide-to-File-Storage-and-Retrieval.webp","width":800,"height":600,"caption":"Unlocking-the-Power-of-Google-Drive-A-Guide-to-File-Storage-and-Retrieval"},{"@type":"BreadcrumbList","@id":"https:\/\/csdev.site\/creole_new\/unlocking-the-power-of-google-drive-a-guide-to-file-storage-and-retrieval\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/csdev.site\/creole_new\/"},{"@type":"ListItem","position":2,"name":"Unlocking the Power of Google Drive: A Guide to File Storage and Retrieval"}]},{"@type":"WebSite","@id":"https:\/\/csdev.site\/creole_new\/#website","url":"https:\/\/csdev.site\/creole_new\/","name":"Creole Studios","description":"Creole Studios","publisher":{"@id":"https:\/\/csdev.site\/creole_new\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/csdev.site\/creole_new\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/csdev.site\/creole_new\/#organization","name":"Creole Studios","url":"https:\/\/csdev.site\/creole_new\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/csdev.site\/creole_new\/#\/schema\/logo\/image\/","url":"https:\/\/csdev.site\/creole_new\/wp-content\/uploads\/2024\/04\/creole_smalllogo.webp","contentUrl":"https:\/\/csdev.site\/creole_new\/wp-content\/uploads\/2024\/04\/creole_smalllogo.webp","width":290,"height":158,"caption":"Creole Studios"},"image":{"@id":"https:\/\/csdev.site\/creole_new\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/csdev.site\/creole_new\/#\/schema\/person\/b43e9f2e6aca9f20d75a577d5bb01b37","name":"Bharatsinh Raj","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/csdev.site\/creole_new\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d9b0af3b1fee78a5e61cd91748b2fa3461b8fa262e070c39e51249f8a91ef248?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d9b0af3b1fee78a5e61cd91748b2fa3461b8fa262e070c39e51249f8a91ef248?s=96&d=mm&r=g","caption":"Bharatsinh Raj"}}]}},"_links":{"self":[{"href":"https:\/\/csdev.site\/creole_new\/wp-json\/wp\/v2\/posts\/15643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/csdev.site\/creole_new\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/csdev.site\/creole_new\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/csdev.site\/creole_new\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/csdev.site\/creole_new\/wp-json\/wp\/v2\/comments?post=15643"}],"version-history":[{"count":8,"href":"https:\/\/csdev.site\/creole_new\/wp-json\/wp\/v2\/posts\/15643\/revisions"}],"predecessor-version":[{"id":15697,"href":"https:\/\/csdev.site\/creole_new\/wp-json\/wp\/v2\/posts\/15643\/revisions\/15697"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/csdev.site\/creole_new\/wp-json\/wp\/v2\/media\/15696"}],"wp:attachment":[{"href":"https:\/\/csdev.site\/creole_new\/wp-json\/wp\/v2\/media?parent=15643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}