[{"data":1,"prerenderedAt":432},["ShallowReactive",2],{"footer-primary":3,"footer-secondary":93,"footer-description":119,"short-hops-soft-delete":121,"short-hops-soft-delete-next":166,"sales-reps":180},{"items":4},[5,29,49,69],{"id":6,"title":7,"url":8,"page":8,"children":9},"522e608a-77b0-4333-820d-d4f44be2ade1","Solutions",null,[10,15,20,25],{"id":11,"title":12,"url":8,"page":13},"fcafe85a-a798-4710-9e7a-776fe413aae5","Headless CMS",{"permalink":14},"/solutions/headless-cms",{"id":16,"title":17,"url":8,"page":18},"79972923-93cf-4777-9e32-5c9b0315fc10","Backend-as-a-Service",{"permalink":19},"/solutions/backend-as-a-service",{"id":21,"title":22,"url":8,"page":23},"0fa8d0c1-7b64-4f6f-939d-d7fdb99fc407","Product Information",{"permalink":24},"/solutions/product-information-management",{"id":26,"title":27,"url":28,"page":8},"63946d54-6052-4780-8ff4-91f5a9931dcc","100+ Things to Build","https://directus.io/blog/100-tools-apps-and-platforms-you-can-build-with-directus",{"id":30,"title":31,"url":8,"page":8,"children":32},"8ab4f9b1-f3e2-44d6-919b-011d91fe072f","Resources",[33,37,41,45],{"id":34,"title":35,"url":36,"page":8},"f951fb84-8777-4b84-9e91-996fe9d25483","Documentation","https://docs.directus.io",{"id":38,"title":39,"url":40,"page":8},"366febc7-a538-4c08-a326-e6204957f1e3","Guides","https://docs.directus.io/guides/",{"id":42,"title":43,"url":44,"page":8},"aeb9128e-1c5f-417f-863c-2449416433cd","Community","https://directus.chat",{"id":46,"title":47,"url":48,"page":8},"da1c2ed8-0a77-49b0-a903-49c56cb07de5","Release Notes","https://github.com/directus/directus/releases",{"id":50,"title":51,"url":8,"page":8,"children":52},"d61fae8c-7502-494a-822f-19ecff3d0256","Support",[53,57,61,65],{"id":54,"title":55,"url":56,"page":8},"8c43c781-7ebd-475f-a931-747e293c0a88","Issue Tracker","https://github.com/directus/directus/issues",{"id":58,"title":59,"url":60,"page":8},"d77bb78e-cf7b-4e01-932a-514414ba49d3","Feature Requests","https://github.com/directus/directus/discussions?discussions_q=is:open+sort:top",{"id":62,"title":63,"url":64,"page":8},"4346be2b-2c53-476e-b53b-becacec626a6","Community Chat","https://discord.com/channels/725371605378924594/741317677397704757",{"id":66,"title":67,"url":68,"page":8},"26c115d2-49f7-4edc-935e-d37d427fb89d","Cloud Dashboard","https://directus.cloud",{"id":70,"title":71,"url":8,"page":8,"children":72},"49141403-4f20-44ac-8453-25ace1265812","Organization",[73,78,84,88],{"id":74,"title":75,"url":76,"page":77},"1f36ea92-8a5e-47c8-914c-9822a8b9538a","About","/about",{"permalink":76},{"id":79,"title":80,"url":81,"page":82},"b84bf525-5471-4b14-a93c-225f6c386005","Careers","#",{"permalink":83},"/careers",{"id":85,"title":86,"url":87,"page":8},"86aabc3a-433d-434b-9efa-ad1d34be0a34","Brand Assets","https://drive.google.com/drive/folders/1lBOTba4RaA5ikqOn8Ewo4RYzD0XcymG9?usp=sharing",{"id":89,"title":90,"url":8,"page":91},"8d2fa1e3-198e-4405-81e1-2ceb858bc237","Contact",{"permalink":92},"/contact",{"items":94},[95,101,107,113],{"id":96,"title":97,"url":8,"page":98,"children":100},"8a1b7bfa-429d-4ffc-a650-2a5fdcf356da","Cloud Policies",{"permalink":99},"/cloud-policies",[],{"id":102,"title":103,"url":81,"page":104,"children":106},"bea848ef-828f-4306-8017-6b00ec5d4a0c","License",{"permalink":105},"/bsl",[],{"id":108,"title":109,"url":81,"page":110,"children":112},"4e914f47-4bee-42b7-b445-3119ee4196ef","Terms",{"permalink":111},"/terms",[],{"id":114,"title":115,"url":81,"page":116,"children":118},"ea69eda6-d317-4981-8421-fcabb1826bfd","Privacy",{"permalink":117},"/privacy",[],{"description":120},"\u003Cp>A composable backend to build your Headless CMS, BaaS, and more.&nbsp;\u003C/p>",{"id":122,"slug":123,"vimeo_id":124,"description":125,"tile":126,"length":127,"resources":8,"people":8,"episode_number":128,"published":129,"title":130,"video_transcript_html":131,"video_transcript_text":132,"content":133,"status":134,"episode_people":135,"recommendations":150,"season":151,"seo":165},"1fb83779-28e9-4523-bcbc-57065d7177a1","soft-delete","983672903","Learn how to set up and use the archive functionality to declutter your views, improve workflow, and maintain a clean data structure without permanently deleting items. ","725e6b81-e003-479b-b5c0-154330a159f1",3,2,"2024-07-26","Soft Delete","\u003Cp>Speaker 0: Hello, and welcome back to yet another episode of Short Hops. I'm your host, Brian Gillespie. Today, I wanna cover the soft delete features inside Directus. It's called archive. So the archive feature allows you just to move records or items out of your way that are archived, that are no longer needed.\u003C/p>\u003Cp>Alright? So the example that we have here is our inbox. You can see I've got a couple of new items that have arrived in the inbox with, you know, contact forms and newsletter. Some of these things I need to take care of. Some of them have already been assigned.\u003C/p>\u003Cp>Some of them have already been closed. That's great. What do I what if I wanna get rid of these ones that are closed, get them out of my view? You know, I could certainly come in and create a filter for that using the filters inside Directus, really easy. Isn't empty or, I'm sorry, isn't does not equal closed.\u003C/p>\u003Cp>Right? So I could save that as the default view, but I've got another option. And that is using the archive feature. So to find that, I just go to the specific collection that I wanna edit. In that case, this is the inbox.\u003C/p>\u003Cp>I'm gonna scroll down the page until I come across the archive settings. So I'm gonna choose the archive field, which is basically what field do we wanna act on to archive or unarchive records. And then we want to enable this. And then we're gonna add a value. So if the value is closed we're gonna archive that record.\u003C/p>\u003Cp>If we unarchive something we bring it back, we're gonna set the value to new. Right? And that's really all we have to do in this case. We go back to our inbox and now you can see I don't see any of these records that have been closed. And this one that came in 19 hours ago, if I go in and just do like a quick edit on that, change this to closed, you can see that no longer shows up.\u003C/p>\u003Cp>Now on the right hand side bar, I get a new archive option. So I could show active items, I could show archived items, or I could show all of them. And then if I wanna bring an item back, I could just click in it or, and click this unarchive option, and that will change the status for me. Or I could manually change the status or I could do this in bulk by just setting the status to assigned, right? And now I no longer have those archived items.\u003C/p>\u003Cp>Now super simple, great little UX addition. One thing to remember though, this does not necessarily apply to the actual API. You know, this is only inside the data studio. If you want like a soft delete feature inside the API you can either do that using permissions or when you run your API calls, you wanna make sure that you look for the ones where status is new or assigned. So these settings only apply within the data studio.\u003C/p>\u003Cp>And with that, that's it for this episode of Short Hops. Stay tuned for the next one.\u003C/p>","Hello, and welcome back to yet another episode of Short Hops. I'm your host, Brian Gillespie. Today, I wanna cover the soft delete features inside Directus. It's called archive. So the archive feature allows you just to move records or items out of your way that are archived, that are no longer needed. Alright? So the example that we have here is our inbox. You can see I've got a couple of new items that have arrived in the inbox with, you know, contact forms and newsletter. Some of these things I need to take care of. Some of them have already been assigned. Some of them have already been closed. That's great. What do I what if I wanna get rid of these ones that are closed, get them out of my view? You know, I could certainly come in and create a filter for that using the filters inside Directus, really easy. Isn't empty or, I'm sorry, isn't does not equal closed. Right? So I could save that as the default view, but I've got another option. And that is using the archive feature. So to find that, I just go to the specific collection that I wanna edit. In that case, this is the inbox. I'm gonna scroll down the page until I come across the archive settings. So I'm gonna choose the archive field, which is basically what field do we wanna act on to archive or unarchive records. And then we want to enable this. And then we're gonna add a value. So if the value is closed we're gonna archive that record. If we unarchive something we bring it back, we're gonna set the value to new. Right? And that's really all we have to do in this case. We go back to our inbox and now you can see I don't see any of these records that have been closed. And this one that came in 19 hours ago, if I go in and just do like a quick edit on that, change this to closed, you can see that no longer shows up. Now on the right hand side bar, I get a new archive option. So I could show active items, I could show archived items, or I could show all of them. And then if I wanna bring an item back, I could just click in it or, and click this unarchive option, and that will change the status for me. Or I could manually change the status or I could do this in bulk by just setting the status to assigned, right? And now I no longer have those archived items. Now super simple, great little UX addition. One thing to remember though, this does not necessarily apply to the actual API. You know, this is only inside the data studio. If you want like a soft delete feature inside the API you can either do that using permissions or when you run your API calls, you wanna make sure that you look for the ones where status is new or assigned. So these settings only apply within the data studio. And with that, that's it for this episode of Short Hops. Stay tuned for the next one.","\u003Cp>In this episode of Short Hops, host Bryant Gillespie delves into the soft delete functionality in Directus, known as the archive feature. Discover how this powerful tool can help you manage your records more efficiently and keep your workspace organized.\u003C/p>\n\u003Cp>What you'll learn:\u003C/p>\n\u003Cul>\n\u003Cli>Understanding the archive feature and its benefits\u003C/li>\n\u003Cli>How to set up and configure archive settings for a collection\u003C/li>\n\u003Cli>Using the archive feature to declutter your views\u003C/li>\n\u003Cli>Archiving and unarchiving individual or bulk items\u003C/li>\n\u003Cli>Viewing active, archived, or all items in your collection\u003C/li>\n\u003Cli>Important considerations when using the archive feature with the API\u003C/li>\n\u003C/ul>","published",[136],{"people_id":137},{"id":138,"first_name":139,"last_name":140,"avatar":141,"bio":142,"links":143},"791e1503-1d88-463d-9347-0b9192933576","Bryant","Gillespie","9013afc8-e8d7-4182-9b18-44db08117bb9","Developer Advocate at Directus",[144,147],{"url":145,"service":146},"https://directus.io/team/bryant-gillespie","website",{"service":148,"url":149},"github","https://github.com/bryantgillespie",[],{"id":152,"number":128,"year":153,"episodes":154,"show":162},"a1886f5f-e5c4-4dd2-ac8a-d2e7c176f813","2024",[155,122,156,157,158,159,160,161],"e82ffa88-91c1-4605-aefa-67bb8e20a9ed","f711e94f-14c1-48dd-b00c-70a340351412","fcb6f3f2-d6f3-4905-a3d9-b44aed7bb25c","2d192e76-378b-4540-9d41-2506460a50af","cc653542-7721-4b37-8978-60fee90081dc","0bfed0fe-2c73-4528-8a6a-d3b39b4c0528","0cbf2b23-545e-4ea7-ae45-47707292caec",{"title":163,"tile":164},"Short Hops","2166990a-8dbf-4956-8b25-11b72ad203d5",{"title":8,"meta_description":8},{"id":156,"slug":167,"season":152,"vimeo_id":168,"description":169,"tile":170,"length":171,"resources":8,"people":8,"episode_number":127,"published":129,"title":172,"video_transcript_html":173,"video_transcript_text":174,"content":175,"seo":176,"status":134,"episode_people":177,"recommendations":179},"m2a-relationships","983672403","Discover how to use Directus's powerful many-to-any relationships to create flexible and dynamic content structures. Learn to set up a versatile page builder that allows linking diverse content types to a single parent collection. ","d59cf454-5e42-4cbd-a1cd-27ddf09f151d",7,"M2A Relationships","\u003Cp>Speaker 0: Welcome back to another episode of Short Hops. I'm your host Brian Gillespie. And today, we're gonna show you how to relate anything to anything or everything inside your Directus instance. So that is done using the many to any relationships or the builder interface that we have inside the project. And, basically, it allows you to link items from a parent collection to any other child collection in the database.\u003C/p>\u003Cp>So it is useful for page builder scenarios, other types of dynamic content creation, very helpful when you're building a CMS. You know, you might want to empower your marketing team and allow them to build complex layouts without actually touching code, and without a ton of effort on your part. So, you know, this graphic kind of illustrates what we've got going on here. We've got 3 different types of content. These are gonna be set up as different collections inside Directus.\u003C/p>\u003Cp>We've got a container for that content, like we wanna put all this content on a blog post or a page. And then we have this Junction collection, which has the ID of the blog, the collection for the actual different types of content we have, and then a ID for the content within that collection. So that's kind of how it all fits together at a high level. Let's jump into Directus and actually set this up. So I'm just in one of my demo projects and I'm gonna hop over to the data model section here and I'm also gonna do a little mouse highlighter thing.\u003C/p>\u003Cp>So what I've already done here is basically gone through and defined collections for all of my different components on a page. I've got a hero section that has a title, some buttons, and a background. I've got a, CTA section which has a title, some buttons and an image. I've got FAQs that have a title, a headline and some actual FAQs, some questions for us to answer. And what I don't have here is a container for this.\u003C/p>\u003Cp>What is it? What is the vessel for this? Let's create a new collection called pages. We'll just give this a generated UUID. I'm gonna leave the rest of this blank for now.\u003C/p>\u003Cp>We'll give this page a title. Probably want to give it a slug so we can access it or a permalink or something like that. And now we're into the many to any relationships inside Directus. So how do we set this up? Alright.\u003C/p>\u003Cp>I'm gonna go down to the relational section, I'm gonna look for the builder or m2a, and I typically call this something like blocks, content blocks, page blocks, you know, your specific naming convention, you know, use what feels right for you. But when we set this up, unlike the other relationships in Directus where we have to pick 1 collection that we want to relate to, here we can pick as many collections as we want. So I want the block hero. I want the, block FAQs. I want the block CTA collection.\u003C/p>\u003Cp>And once I'm done with that, I'll hit save, and that will create that field for me. Now if I go into my data model and I look at the very bottom, you can see that Directus has created this junction collection for us called pages blocks, or pages underscore blocks. If we take a look at it, we can see we have a relationship back to the pages ID, and then we have an item and a collection. So, these relate to the actual blocks that we selected like hero or CTA or FAQ. So now, how does this all come together when we're actually setting up or creating a page?\u003C/p>\u003Cp>Alright. We give it a title. We'll call this slash for the slug just because that's the homepage or you know, root home page, whatever you wanna call it, index. Great. And then I go in and create some blocks.\u003C/p>\u003Cp>So I can create a hero block. This is my hero. You are my hero. Okay. Go in and fill out the rest of these fields as well.\u003C/p>\u003Cp>Maybe we add some FAQs. Right? FAQs, we'll give it a title. Let's add one question to it. What is many to any?\u003C/p>\u003Cp>The answer is magic. Alright. So we'll go ahead and save this. Save this, and now we have that page builder scenario where we can set this up, right? If I wanna be able to drag and drop the order of that, I could just go back to that relationship.\u003C/p>\u003Cp>I go to pages, I go to blocks, and I look for my relationship here. I'm just gonna add a sort field, we'll call it sort. Directus will create that for me. And now I can drag and drop to rearrange these blocks and that would be the order that we would render those on the front end. So now I'm just gonna go in and quickly give public access to those blocks.\u003C/p>\u003Cp>So I've got a hero, I've got FAQs, and I also have pages and pages blocks. You know, set up your permissions based on what you need for your specific project, but I just wanted to take a look at this really quickly on this video. So we're gonna go into our API. We'll do a slash item slash pages. And here we could see we've got a title, we've got our slug, we've got our blocks.\u003C/p>\u003Cp>Great. But how do I get the information within the blocks? Right? So I'll just call fields. Let's get all the root level fields and we'll do a comma, and then I'm gonna say blocks dot item dot ID.\u003C/p>\u003Cp>Let's do another one like blocks dot item or no, let's just get all the fields from the item and take a look at that. Right. Cool. Alright. So now I could see just by, you know, setting up this quick little param for fields, I've got the actual content of my blocks.\u003C/p>\u003Cp>So I've got my FAQs and here's what that looks like. I've got my item, my hero here, so we could see that as well. And then you would obviously, like feed that into your front end. You probably got some type of component that loops through these things and dynamically renders the correct for that. So that is it for this video.\u003C/p>\u003Cp>I hope this demystified some of the many to any relationships for you. There's definitely more meat on the bone here, but come back for the next video. We'll see you.\u003C/p>","Welcome back to another episode of Short Hops. I'm your host Brian Gillespie. And today, we're gonna show you how to relate anything to anything or everything inside your Directus instance. So that is done using the many to any relationships or the builder interface that we have inside the project. And, basically, it allows you to link items from a parent collection to any other child collection in the database. So it is useful for page builder scenarios, other types of dynamic content creation, very helpful when you're building a CMS. You know, you might want to empower your marketing team and allow them to build complex layouts without actually touching code, and without a ton of effort on your part. So, you know, this graphic kind of illustrates what we've got going on here. We've got 3 different types of content. These are gonna be set up as different collections inside Directus. We've got a container for that content, like we wanna put all this content on a blog post or a page. And then we have this Junction collection, which has the ID of the blog, the collection for the actual different types of content we have, and then a ID for the content within that collection. So that's kind of how it all fits together at a high level. Let's jump into Directus and actually set this up. So I'm just in one of my demo projects and I'm gonna hop over to the data model section here and I'm also gonna do a little mouse highlighter thing. So what I've already done here is basically gone through and defined collections for all of my different components on a page. I've got a hero section that has a title, some buttons, and a background. I've got a, CTA section which has a title, some buttons and an image. I've got FAQs that have a title, a headline and some actual FAQs, some questions for us to answer. And what I don't have here is a container for this. What is it? What is the vessel for this? Let's create a new collection called pages. We'll just give this a generated UUID. I'm gonna leave the rest of this blank for now. We'll give this page a title. Probably want to give it a slug so we can access it or a permalink or something like that. And now we're into the many to any relationships inside Directus. So how do we set this up? Alright. I'm gonna go down to the relational section, I'm gonna look for the builder or m2a, and I typically call this something like blocks, content blocks, page blocks, you know, your specific naming convention, you know, use what feels right for you. But when we set this up, unlike the other relationships in Directus where we have to pick 1 collection that we want to relate to, here we can pick as many collections as we want. So I want the block hero. I want the, block FAQs. I want the block CTA collection. And once I'm done with that, I'll hit save, and that will create that field for me. Now if I go into my data model and I look at the very bottom, you can see that Directus has created this junction collection for us called pages blocks, or pages underscore blocks. If we take a look at it, we can see we have a relationship back to the pages ID, and then we have an item and a collection. So, these relate to the actual blocks that we selected like hero or CTA or FAQ. So now, how does this all come together when we're actually setting up or creating a page? Alright. We give it a title. We'll call this slash for the slug just because that's the homepage or you know, root home page, whatever you wanna call it, index. Great. And then I go in and create some blocks. So I can create a hero block. This is my hero. You are my hero. Okay. Go in and fill out the rest of these fields as well. Maybe we add some FAQs. Right? FAQs, we'll give it a title. Let's add one question to it. What is many to any? The answer is magic. Alright. So we'll go ahead and save this. Save this, and now we have that page builder scenario where we can set this up, right? If I wanna be able to drag and drop the order of that, I could just go back to that relationship. I go to pages, I go to blocks, and I look for my relationship here. I'm just gonna add a sort field, we'll call it sort. Directus will create that for me. And now I can drag and drop to rearrange these blocks and that would be the order that we would render those on the front end. So now I'm just gonna go in and quickly give public access to those blocks. So I've got a hero, I've got FAQs, and I also have pages and pages blocks. You know, set up your permissions based on what you need for your specific project, but I just wanted to take a look at this really quickly on this video. So we're gonna go into our API. We'll do a slash item slash pages. And here we could see we've got a title, we've got our slug, we've got our blocks. Great. But how do I get the information within the blocks? Right? So I'll just call fields. Let's get all the root level fields and we'll do a comma, and then I'm gonna say blocks dot item dot ID. Let's do another one like blocks dot item or no, let's just get all the fields from the item and take a look at that. Right. Cool. Alright. So now I could see just by, you know, setting up this quick little param for fields, I've got the actual content of my blocks. So I've got my FAQs and here's what that looks like. I've got my item, my hero here, so we could see that as well. And then you would obviously, like feed that into your front end. You probably got some type of component that loops through these things and dynamically renders the correct for that. So that is it for this video. I hope this demystified some of the many to any relationships for you. There's definitely more meat on the bone here, but come back for the next video. We'll see you.","\u003Cp>In this comprehensive episode of Short Hops, host Bryant Gillespie dives deep into the world of many-to-any relationships in Directus. Learn how to create flexible content structures that allow you to relate anything to well... anything within your Directus instance, opening up powerful possibilities for dynamic content creation and management.\u003C/p>\n\u003Cp>What you'll learn:\u003C/p>\n\u003Cul>\n\u003Cli>Understanding the concept and benefits of many-to-any relationships\u003C/li>\n\u003Cli>Setting up collections for different content types (e.g., hero sections, CTAs, FAQs)\u003C/li>\n\u003Cli>Creating a parent collection to contain diverse content blocks\u003C/li>\n\u003Cli>Implementing the builder interface for many-to-any relationships\u003C/li>\n\u003Cli>Configuring and managing junction collections\u003C/li>\n\u003Cli>Adding drag-and-drop functionality for content block ordering\u003C/li>\n\u003Cli>Querying and retrieving complex relational data through the API\u003C/li>\n\u003C/ul>\n\u003Cp>Bryant guides you through a practical, step-by-step process of:\u003C/p>\n\u003Cul>\n\u003Cli>Creating collections for various content types\u003C/li>\n\u003Cli>Setting up a parent 'pages' collection\u003C/li>\n\u003Cli>Implementing the many-to-any relationship using the builder interface\u003C/li>\n\u003Cli>Understanding the automatically generated junction collection\u003C/li>\n\u003Cli>Adding and managing content blocks within pages\u003C/li>\n\u003Cli>Implementing sort functionality for content blocks\u003C/li>\n\u003Cli>Setting up permissions for public access\u003C/li>\n\u003Cli>Querying the API to retrieve complex relational data\u003C/li>\n\u003C/ul>\n\u003Cp>Whether you're building a website with dynamic layouts, a complex CMS, or any system requiring versatile content structures, this technique will empower your team to create sophisticated content without the need for constant developer intervention.\u003C/p>","ac6f05df-e1e7-4170-9114-e13f2420a669",[178],"53c09b3e-ea64-421b-8b1b-da48e6ec07fd",[],{"reps":181},[182,238],{"name":183,"sdr":8,"link":184,"countries":185,"states":187},"John Daniels","https://meet.directus.io/meetings/john2144/john-contact-form-meeting",[186],"United States",[188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237],"Michigan","Indiana","Ohio","West Virginia","Kentucky","Virginia","Tennessee","North Carolina","South Carolina","Georgia","Florida","Alabama","Mississippi","New York","MI","IN","OH","WV","KY","VA","TN","NC","SC","GA","FL","AL","MS","NY","Connecticut","CT","Delaware","DE","Maine","ME","Maryland","MD","Massachusetts","MA","New Hampshire","NH","New Jersey","NJ","Pennsylvania","PA","Rhode Island","RI","Vermont","VT","Washington DC","DC",{"name":239,"link":240,"countries":241},"Michelle Riber","https://meetings.hubspot.com/mriber",[242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,219,430,431],"Albania","ALB","Algeria","DZA","Andorra","AND","Angola","AGO","Austria","AUT","Belgium","BEL","Benin","BEN","Bosnia and Herzegovina","BIH","Botswana","BWA","Bulgaria","BGR","Burkina Faso","BFA","Burundi","BDI","Cameroon","CMR","Cape Verde","CPV","Central African Republic","CAF","Chad","TCD","Comoros","COM","Côte d'Ivoire","CIV","Croatia","HRV","Czech Republic","CZE","Democratic Republic of Congo","COD","Denmark","DNK","Djibouti","DJI","Egypt","EGY","Equatorial Guinea","GNQ","Eritrea","ERI","Estonia","EST","Eswatini","SWZ","Ethiopia","ETH","Finland","FIN","France","FRA","Gabon","GAB","Gambia","GMB","Ghana","GHA","Greece","GRC","Guinea","GIN","Guinea-Bissau","GNB","Hungary","HUN","Iceland","ISL","Ireland","IRL","Italy","ITA","Kenya","KEN","Latvia","LVA","Lesotho","LSO","Liberia","LBR","Libya","LBY","Liechtenstein","LIE","Lithuania","LTU","Luxembourg","LUX","Madagascar","MDG","Malawi","MWI","Mali","MLI","Malta","MLT","Mauritania","MRT","Mauritius","MUS","Moldova","MDA","Monaco","MCO","Montenegro","MNE","Morocco","MAR","Mozambique","MOZ","Namibia","NAM","Niger","NER","Nigeria","NGA","North Macedonia","MKD","Norway","NOR","Poland","POL","Portugal","PRT","Republic of Congo","COG","Romania","ROU","Rwanda","RWA","San Marino","SMR","São Tomé and Príncipe","STP","Senegal","SEN","Serbia","SRB","Seychelles","SYC","Sierra Leone","SLE","Slovakia","SVK","Slovenia","SVN","Somalia","SOM","South Africa","ZAF","South Sudan","SSD","Spain","ESP","Sudan","SDN","Sweden","SWE","Tanzania","TZA","Togo","TGO","Tunisia","TUN","Uganda","UGA","United Kingdom","GBR","Vatican City","VAT","Zambia","ZMB","Zimbabwe","ZWE","UK","Germany","Netherlands","Switzerland","CH","NL",1773850429147]