<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Help Articles &#8211; Nucleus Help</title>
	<atom:link href="https://nucleus-help.bmt.bafta.org/help-articles/feed/" rel="self" type="application/rss+xml" />
	<link>https://nucleus-help.bmt.bafta.org</link>
	<description>Help Articles and FAQs for the BAFTA Nucleus Awards and  Grants Management System</description>
	<lastBuildDate>Thu, 21 Aug 2025 11:49:48 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://nucleus-help.bmt.bafta.org/wp-content/uploads/2021/07/bafta-mask_favicon_website21-1.png</url>
	<title>Help Articles &#8211; Nucleus Help</title>
	<link>https://nucleus-help.bmt.bafta.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Adding a Custom Discount or Price Increase to an Invoice</title>
		<link>https://nucleus-help.bmt.bafta.org/help-articles/adding-a-custom-discount-or-price-increase-to-an-invoice/</link>
		
		<dc:creator><![CDATA[David Lortal]]></dc:creator>
		<pubDate>Thu, 26 May 2022 20:14:58 +0000</pubDate>
				<guid isPermaLink="false">https://nucleus-help.bmt.bafta.org/?post_type=lsvr_kba&#038;p=640</guid>

					<description><![CDATA[There are occasions when admin users need to add a one off discount or price increase to an entrant invoice. For example if the entrant has been granted a reduced fee due to hardship or if admin users need to make the invoice total a set amount which is not provided by the price structure [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>There are occasions when admin users need to add a one off discount or price increase to an entrant invoice. For example if the entrant has been granted a reduced fee due to hardship or if admin users need to make the invoice total a set amount which is not provided by the price structure set. In any case where admins need to update the price of the invoice this can be actioned so long as the invoice has not been generated. If the invoice has been generated but not paid then admins can <a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-cancel-and-re-issue-an-unpaid-invoice/">revoke the invoice and regenerate</a> it after the price amendment has been applied.</p>



<p>Before you add a discount or price increase to an invoice make sure that the entrant has created and saved one entry.</p>



<h3 class="wp-block-heading">How to Add an Individual Discount to an Invoice</h3>



<ol class="wp-block-list">
<li>Log into the <strong>Admin Interface</strong></li>



<li>Go to <strong><strong>Award>Overview</strong>> View Entries</strong></li>



<li>In the table search for the entry where you want to make the amend</li>



<li>Select <strong>Edit</strong> from the <strong>Actions </strong>menu</li>



<li>Scroll to the bottom of the entry and look for <strong>Invoice Options </strong>section</li>



<li>In the <strong>Discount Reason</strong> type a description of the discount that will be printed on the invoice</li>



<li>In the <strong>Discount Amount</strong> enter the amount of the discount. Note that if you want to add a price increase to the invoice you need to enter a &#8211; before the number:
<ol class="wp-block-list">
<li>10 &#8211; will give a £10 discount</li>



<li>&#8211; 10 &#8211; will add £10 to the invoice total</li>
</ol>
</li>



<li>Click <strong>Save and Close</strong></li>



<li>When the invoice for the entry is generated it will include the price change defined in this section</li>
</ol>



<p><strong>Note</strong> &#8211; if the entry where the price change has been added is deleted before the invoice is generated then the amendment will not appear on the invoice.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Adding a customised logo for payment paperwork on different awards</title>
		<link>https://nucleus-help.bmt.bafta.org/help-articles/adding-a-customised-logo-for-payment-paperwork-on-different-awards/</link>
		
		<dc:creator><![CDATA[David Lortal]]></dc:creator>
		<pubDate>Fri, 24 Dec 2021 14:44:01 +0000</pubDate>
				<guid isPermaLink="false">https://nucleus-help.bmt.bafta.org/?post_type=lsvr_kba&#038;p=434</guid>

					<description><![CDATA[Your company logo that appears on all of your invoices, credit notes and receipts is set by default as the one you provide us with when we set up your Nucleus instance. However, we appreciate that some awards may want to use specific emails for different awards eg. for your 2022 Awards you may have [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Your company logo that appears on all of your invoices, credit notes and receipts is set by default as the one you provide us with when we set up your Nucleus instance.</p>



<p>However, we appreciate that some awards may want to use specific emails for different awards eg. for your 2022 Awards you may have had a customised 2022 logo produced.</p>



<p>You can now use these, or a per award basis, in the new <strong>Logo Override</strong> setting that appears in the <strong>Payment Paperwork</strong> section of your main Awards set-up page. To access it:</p>



<ul class="wp-block-list">
<li>Go to <strong>Awards</strong></li>



<li>Select your Award from the list and click <strong>Settings</strong></li>



<li>Scroll down to <strong>Payment Paperwork</strong> and in the field <strong>Logo Override</strong>, click on the Image icon and enter the URL of a web-hosted version of the logo.</li>



<li>Click <strong>Save and Close</strong></li>
</ul>



<p>This logo override will now apply exclusively to that award. The default logo will continue to apply to all those awards that are unaltered.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Adding a Discount to an Invoice that Has Been Generated but Not yet Paid</title>
		<link>https://nucleus-help.bmt.bafta.org/help-articles/adding-a-discount-to-an-invoice-that-has-been-generated-but-not-yet-paid/</link>
		
		<dc:creator><![CDATA[David Lortal]]></dc:creator>
		<pubDate>Fri, 29 Oct 2021 15:34:52 +0000</pubDate>
				<guid isPermaLink="false">https://nucleus-help.bmt.bafta.org/?post_type=lsvr_kba&#038;p=385</guid>

					<description><![CDATA[In Nucleus, it is possible to add a discretionary discount to an invoice that has been generated without having to ask the Entrant to resubmit their Entry, as long as the invoice itself has not been paid yet. To action this, you will need to follow a 3 stages process starting by revoking the invoice, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>In Nucleus, it is possible to add a discretionary discount to an invoice that has been generated without having to ask the Entrant to resubmit their Entry, as long as the invoice itself has not been paid yet.</p>



<p>To action this, you will need to follow a 3 stages process starting by revoking the invoice, then adding the discount to the required Entry and finally raising a new invoice to apply the discount.</p>



<h3 class="wp-block-heading" id="How-to-Revoke-an-Invoice">How to Revoke an Invoice</h3>



<ol start="1" class="wp-block-list">
<li>Login to the <strong>Admin Interface</strong></li>



<li>Go to <strong>Awards>Overview</strong>><strong>Invoices</strong></li>



<li>Find the invoice from the <strong>Invoice List</strong></li>



<li>Click on <strong>Actions &gt; Revoke invoice</strong></li>



<li>Click <strong>OK</strong> where requested. A <strong>Credit Note</strong> will automatically be raised against it</li>
</ol>



<h3 class="wp-block-heading" id="How-to-Add-a-Discount-Code-to-an-Unpaid-Entry">How to Add a Discount Code to an Unpaid Entry</h3>



<ol start="1" class="wp-block-list">
<li>Go to <strong>Award>View Entries</strong></li>



<li>Look for the relevant Entry</li>



<li>Click on <strong>Actions</strong>&gt;<strong>Edit Form</strong></li>



<li>Scroll down to the <strong>Invoice Options</strong> section (which is hidden from the Entrant). Please just note that if you are using <a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-create-paginated-sections-for-long-forms/">paginated dividers</a>, this will be under the “<strong>Entry Setting</strong>” section.</li>



<li>In the <strong>Discount Reason</strong> field, type the reason for the discount</li>



<li>In the <strong>Discount Amount</strong> field, type the amount</li>



<li>Click <strong>Save and Close. </strong>The discount is now applied</li>
</ol>



<h3 class="wp-block-heading" id="How-to-Raise-a-New-Invoice-with-a-Discount-Applied">How to Raise a New Invoice with a Discount Applied</h3>



<p>After you have actioned the steps above, you will just need to CloseDown the order in order to raise the new invoice.</p>



<ol start="1" class="wp-block-list">
<li>Go to <strong>Awards>Overview>Organisations</strong></li>



<li>Look for the relevant Organisation/Entrant and click <strong>Edit</strong> alongside them</li>



<li>Scroll down to the <strong>Entry Summary</strong> for this <strong>Organisation</strong></li>



<li>Click <strong>Closedown</strong>. A summary of their order will be displayed</li>



<li>Click <strong>Continue to Payment</strong></li>



<li>On the pop-up that appears add in a <strong>PO Number</strong> if applicable</li>



<li>Type <strong>I AM SURE </strong>where instructed</li>



<li>Click <strong>Proceed to Payment</strong>. The updated invoice will now be generated and emailed to the Entrant</li>
</ol>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Additional/Consultational Support</title>
		<link>https://nucleus-help.bmt.bafta.org/help-articles/additional-consultational-support/</link>
		
		<dc:creator><![CDATA[David Lortal]]></dc:creator>
		<pubDate>Wed, 20 Sep 2023 14:59:03 +0000</pubDate>
				<guid isPermaLink="false">http://54.226.12.186/?post_type=lsvr_kba&#038;p=82</guid>

					<description><![CDATA[Our standard response time for Support requests is 48 hours, although you may receive an answer much sooner if your query is less complex and depending on current Support team workloads/availability. For occasions where you need to guarantee a quicker response, it is possible to book dedicated and continual &#8216;consultational support&#8217; for a premium cost [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-normal-font-size">Our standard response time for Support requests is 48 hours, although you may receive an answer much sooner if your query is less complex and depending on current Support team workloads/availability.</p>



<p class="has-normal-font-size">For occasions where you need to guarantee a quicker response, it is possible to book dedicated and continual &#8216;consultational support&#8217; for a premium cost in additional to your agree annual support package.</p>



<p class="has-normal-font-size">If you think might require this, please get in touch with your contact on our Support Team and tell us your scenario and requirements. We will consider whether the additional support is necessary and, if so, will provide you with a quote accordingly.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Admin User Training (and Re-Training) Guide</title>
		<link>https://nucleus-help.bmt.bafta.org/help-articles/admin-user-training-and-re-training-guide/</link>
		
		<dc:creator><![CDATA[David Lortal]]></dc:creator>
		<pubDate>Tue, 27 Jul 2021 19:39:08 +0000</pubDate>
				<guid isPermaLink="false">http://54.226.12.186/?post_type=lsvr_kba&#038;p=175</guid>

					<description><![CDATA[The below document is our current User Training Guide. It is a walk-through of all the most commonly used functionality and workflows in Nucleus. Every Nucleus instance &#8211; and peoples&#8217; usage of it &#8211; differs, so this Guide is by no means exhaustive. It may not include workflows and processes that are specific to your [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-normal-font-size">The below document is our current User Training Guide. It is a walk-through of all the most commonly used functionality and workflows in Nucleus.</p>



<p class="has-normal-font-size">Every Nucleus instance &#8211; and peoples&#8217; usage of it &#8211; differs, so this Guide is by no means exhaustive. It may not include workflows and processes that are specific to your Nucleus instance. However, it has been compiled with a view to present the <span style="text-decoration: underline;">most common</span> workflows in a general <span style="text-decoration: underline;">chronological order</span> in which they would expect to be done throughout an entire awards or funding cycle &#8211; from creating a project, through managing entries/submission and processing payment to judging. </p>



<p class="has-normal-font-size">As such, it provides a comprehensive guide to new Nucleus users &#8211; including handing over/on-boarding to new team members. Equally, it can be used as a refresher tool for occasional users or regular users embarking on a new awards/funding cycle.</p>



<p class="has-normal-font-size">This Guide will be updated periodically as new functionalities and workflows are added to Nucleus. Feel free to download the current Guide and check back for future updates.</p>



<p class="has-normal-font-size">For ease of reference, the Contents section at the front of the Guide is hyperlinked. To enable you to skip to the section you require, just click on the section you require.</p>



<div data-wp-interactive="core/file" class="wp-block-file aligncenter"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="https://nucleus-help.bmt.bafta.org/wp-content/uploads/2021/12/BAFTA-Nucleus-Admin-Retraining-Guide-December-2021.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of Embed of BAFTA-Nucleus-Admin-Retraining-Guide-December-2021.."></object><a href="https://nucleus-help.bmt.bafta.org/wp-content/uploads/2021/12/BAFTA-Nucleus-Admin-Retraining-Guide-December-2021.pdf">BAFTA-Nucleus-Admin-Retraining-Guide-December-2021</a><a href="https://nucleus-help.bmt.bafta.org/wp-content/uploads/2021/12/BAFTA-Nucleus-Admin-Retraining-Guide-December-2021.pdf" class="wp-block-file__button" download>Download</a></div>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Advancing Entries to a Later Stage</title>
		<link>https://nucleus-help.bmt.bafta.org/help-articles/progressing-entries-to-a-later-stage/</link>
		
		<dc:creator><![CDATA[David Lortal]]></dc:creator>
		<pubDate>Fri, 03 Dec 2021 00:00:56 +0000</pubDate>
				<guid isPermaLink="false">https://nucleus-help.bmt.bafta.org/?post_type=lsvr_kba&#038;p=397</guid>

					<description><![CDATA[There are several ways to advance long- or short-listed entries to a later round. One such method is to create a new round as a separate project. This is suitable especially if you are not asking entrants for any additional questions in the next round. This process essentially involves creating a clone of your original [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>There are several ways to advance long- or short-listed entries to a later round. One such method is to create a new round as a separate project. This is suitable especially if you are not asking entrants for any additional questions in the next round. This process essentially involves creating a clone of your original award project, to which you only copy your short-listed entries from the original.</p>



<p>To action this process, there are 5 key steps you should be following:</p>



<ol class="wp-block-list">
<li>Copying the Award</li>



<li>Checking the Email Templates</li>



<li>Checking the Categories</li>



<li>Bulk copying and creating instant entries</li>



<li>Setting up Viewers</li>
</ol>



<h3 class="wp-block-heading" id="Step-1:-Copying-the-Award">Step 1: Copying the Award</h3>



<ol class="wp-block-list">
<li>Log into the <strong>Admin Interface</strong></li>



<li>Go to <strong>Awards</strong> <strong>&amp; Projects</strong></li>



<li>Select the relevant Award</li>



<li>Click on <strong>&#8230; >Copy</strong></li>



<li>The copied version of your orginal Award will open. You will now need to edit some key settings as follows:</li>



<li><strong>Internal </strong>and <strong>Display names</strong>: update both. Please note that they must be unique and different from the original Award. We recommend you use something that will be understood by your Viewers. For example: &lt;Awards Name&gt; 2022 Final Jury Round</li>



<li><strong>Active</strong> question: set to <strong>No</strong>. In this way, it will be hidden from the Entrant’s Dashboard. On the <strong>Admin Interface</strong>, when you go to<strong> Actions&gt;Awards</strong>, please always make sure to filter the <strong>Show </strong>menu to ‘<strong>Both</strong>’ in order to see both inactive and active Awards</li>



<li><strong>Show Entries on Entrant Dashboard </strong>question: set to <strong>No</strong>. In this way, you prevent users from seeing they have advanced before you have announced it</li>



<li><strong>Open</strong>, <strong>Create</strong> and <strong>Submit</strong> <strong>dates </strong>questions: set an ideal date that enables enough time for you to Copy all of the entries across</li>



<li>Keep <strong>Pay Date</strong>, <strong>Closed Message</strong> and <strong>Delete Data</strong> dates as they were</li>



<li>Scroll down to the <strong>Viewing </strong>section</li>



<li>Edit the<strong> Require Scores and Comments to be Submitted</strong> question as you need</li>



<li>Scroll down to the <strong>Pricing </strong>section</li>



<li>Alongside the<strong> Requires Payment? </strong>question choose<strong> No payment</strong>. This will prevent advancing entries being (re) invoiced</li>



<li>Click <strong>Save &amp; Close</strong></li>
</ol>



<h3 class="wp-block-heading" id="Step-2:-Checking-the-Email-Templates">Step 2: Checking the Email Templates</h3>



<p>It is very important that before you attempt to copy any of your advancing entries across to your new ‘Award’, you must <a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-disable-an-automatic-email-template/">disable certain Email Templates</a> that may be triggered by your actions. This is to ensure that the entrants are not informed automatically of their advancement ahead of any announcement you plan to make.</p>



<ol class="wp-block-list">
<li>Log into the <strong>Admin Interface</strong></li>



<li>Go to <strong>Email Management</strong></li>



<li>Select <strong>Email Templates</strong> from the Email Management section. Please note that you will need to amend these 4 templates:</li>
</ol>



<p>entry/approve<br>entry/progress<br>entry/submit<br>entry/unsubmit</p>



<ol start="4" class="wp-block-list">
<li>Go to the relevant template and click <strong>Default</strong> in the Edit Template column</li>



<li>Go to the <strong>Enabled</strong> setting and switch this to <strong>No</strong></li>



<li>The selected template is now disabled</li>
</ol>



<h3 class="wp-block-heading" id="Step-3:-Checking-the-Categories">Step 3: Checking the Categories</h3>



<p>Depending on what has changed from your first round of judging, you may need to edit your Categories. There could be two different scenarios you might want to consider:</p>



<p><strong>a)</strong> If your judging format, rules and/or jury Viewers have changed, you may have to edit the CMS for each Category on the Viewing Portal. Please do as follows:</p>



<ol class="wp-block-list">
<li>Go to <strong>Overview>Categories</strong></li>



<li>Click <strong>Edit </strong>alongside the Category you want to edit</li>



<li>To edit the title, amend the <strong>Name </strong>field</li>



<li>To edit the Viewing Portal Category Intro, scroll down to the <strong>Viewing Portal</strong> section</li>



<li>Amend the <strong>Viewing portal intro (full)</strong> field as required</li>



<li>Click <strong>Save &amp; Close</strong></li>
</ol>



<p><strong>b)&nbsp;</strong>If you use scoring for your judging, you MUST re-set these for the new round:</p>



<ol class="wp-block-list">
<li>Go to <strong>Overview>Categories</strong></li>



<li>Click <strong>Edit </strong>alongside the Category you want to edit</li>



<li>To edit the Scores and Commenting, scroll down to the <strong>Scoring with Viewing</strong> section</li>



<li>Amend these fields as required</li>



<li>Click <strong>Save &amp; Close</strong></li>
</ol>



<h3 class="wp-block-heading" id="Step-4---Bulk-copying-and-creating-instant-entries">Step 4 &#8211; Bulk copying and creating instant entries</h3>



<p>With all of the round-specific settings confirmed in your new round, you can now copy your advancing entries across to it and automatically Approve them for Viewing.</p>



<ol class="wp-block-list">
<li>Go to <strong>View Entries</strong></li>



<li>Make sure you select your original Award from the dropdown menu at the top of the page</li>



<li>Filter your full <strong>Entry List</strong> as required (eg. by Category)</li>



<li>In the far left <strong>Action</strong> column, select <strong>Copy</strong></li>



<li>Checkboxes will appear alongside each entry</li>



<li>Select each of the entries to advance</li>



<li>Once ready, click the <strong>OK</strong> button at the top of the column</li>



<li>A pop-up will appear, displaying the following:</li>
</ol>



<ul class="wp-block-list">
<li>The list of <strong>entries</strong> you have selected &#8211; Please check</li>



<li>A dropdown from which to select the <strong>award or round</strong> you are advancing these entries to &#8211; Please select your new copied Award</li>



<li>An option to <strong>Choose the Status For the Copied Entries</strong>:<br>a) Select <strong>Unsubmitted</strong> if you need the entrants to supply more info<br>b) Select <strong>Submitted</strong> if you don’t need them to supply more info BUT do still want to pre-screen the entries before sharing them with your Viewers<br>c) Select <strong>Approved</strong> if you want the entries to advance as they are and are Viewer-ready<br>d) Select <strong>As Existing</strong> if the entries are currently in a variety of statuses and you want each of these to preserved when they land in the new round.</li>
</ul>



<ol start="9" class="wp-block-list">
<li>Type <strong>I AM SURE</strong> to confirm this and click <strong>Continue</strong></li>



<li>Your selected entries will now be advanced to the Entry List of your new round or award</li>
</ol>



<h3 class="wp-block-heading" id="Step-5:-Setting-up-Viewers">Step 5: Setting up Viewers</h3>



<p>Now that your advancing Entries are in your new round, you simply need to re-allocate them to your required jury groups.</p>



<p><strong>a)</strong> <strong>Existing Viewers</strong><br>You can use the <strong>Bulk Assign</strong> tool to assign additional Categories to existing Viewers. Please follow<a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-assign-additional-categories-to-viewers/"> this guide</a> to see how to do this. Once actioned, these new round Categories will be assigned to your Viewers’ existing accounts on the Viewing portal.</p>



<p><strong>Note &#8211; </strong>Existing Viewers will NOT receive an email notifying this – the Viewer/Welcome email is only generated for NEW Viewers. If you would like to use Nucleus to inform them of their new categories, you can use the <strong>Entrant Mailout</strong> functionality – and filter according to <strong>Viewers</strong>, the new <strong>Award/Round</strong> and <strong>Categories</strong>. Please review <a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-use-the-entrant-mailout-functionality/">this guide </a>to see how to use it.</p>



<p><strong>Note 2 &#8211; </strong>Your Viewers’ previous round Categories will, by default, still be available for them to view on their Viewing Portal Dashboard. However, their Scores and Comments will be locked. As long as they Submitted them, Viewers will NOT be able to change or delete them in error. Only Admin Users can give permission for them to edit and re-submit previously submitted scores and comments.<br>If you want to remove these previous rounds from their Dashboard, please do as follows:</p>



<ol class="wp-block-list">
<li>Go to <strong>Awards</strong></li>



<li>Find your original Award/round</li>



<li>Click <strong>Overview>Settings</strong></li>



<li>Scroll down to the <strong>Viewing</strong> section</li>



<li>To the setting <strong>Viewing Enabled</strong> select <strong>No</strong></li>
</ol>



<p>The categories from that award/round will no longer be viewable on your Viewers’ Dashboards. However, the data from them will remain intact, and can be instantly recalled to the Viewers’ Dashboards by simply adjusting this Viewing Enabled setting to <strong>Yes</strong>.</p>



<p><strong>b) New Viewers</strong><br>If you are adding any new Viewers to your new round, you can add them by using the <strong>Bulk Create</strong> process described <a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-set-up-viewers-judges-for-your-award/"><u>here</u></a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Allowing Entrants to manage their colleagues/team members accounts</title>
		<link>https://nucleus-help.bmt.bafta.org/help-articles/allowing-entrants-to-manage-their-colleagues-team-members-accounts/</link>
		
		<dc:creator><![CDATA[David Lortal]]></dc:creator>
		<pubDate>Thu, 29 Jul 2021 11:49:48 +0000</pubDate>
				<guid isPermaLink="false">http://54.226.12.186/?post_type=lsvr_kba&#038;p=291</guid>

					<description><![CDATA[You can enable your Entrants to manage &#8211; ie. edit/delete/add &#8211; the accounts of their fellow users from within their organisation. To activate this, please raise a Support Ticket and request it from our Development team. Once activated, the &#8216;Admin User&#8217; of each entrant organisation (ie. their user with enhanced permissions over the Normal Users) [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-normal-font-size">You can enable your Entrants to manage &#8211; ie. edit/delete/add &#8211; the accounts of their fellow users from within their organisation. </p>



<p class="has-normal-font-size">To activate this, please raise a <strong>Support Ticket</strong> and request it from our Development team.</p>



<p class="has-normal-font-size">Once activated, the &#8216;Admin User&#8217; of each entrant organisation (ie. their user with enhanced permissions over the Normal Users) will have a tab headed <strong>MANAGE USERS </strong>on their menu bar. From here they will be able to carry out the desired actions.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>API In Nucleus</title>
		<link>https://nucleus-help.bmt.bafta.org/help-articles/api-in-nucleus/</link>
		
		<dc:creator><![CDATA[Elisabetta Mezzaro]]></dc:creator>
		<pubDate>Thu, 12 Jan 2023 12:42:09 +0000</pubDate>
				<guid isPermaLink="false">https://nucleus-help.bmt.bafta.org/?post_type=lsvr_kba&#038;p=1028</guid>

					<description><![CDATA[The API is not enabled on all instance by default. To request access to the API please submit a support ticket with Nucleus API in the title and our support team will action this. 1. Introduction This guide outlines the operation of the Nucleus API which allows external systems to programmatically access details of awards, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong>The API is not enabled on all instance by default. To request access to the API please submit a support ticket with Nucleus API in the title and our support team will action this.</strong></p>



<h3 class="wp-block-heading">1. Introduction</h3>



<p>This guide outlines the operation of the Nucleus API which allows external systems to programmatically access details of awards, categories, entries and videos. All of the data that is used to build the structure of the viewing interface can be accessed via the API and used within another system.</p>



<p>The first part of this guide will detail the framework and how developers can access the data. The second part of the guide will explain to admin users how to create keys and give developers access to the information that they require.</p>



<h3 class="wp-block-heading" id="Authentication-Framework">2. Authentication Framework</h3>



<p>In order to prevent unauthorised access to the data all API requests must be digitally signed. The approach employed is designed in accordance with the principles set out here: <a href="http://broadcast.oreilly.com/2009/12/principles-for-standardized-rest-authentication.html">http://broadcast.oreilly.com/2009/12/principles-for-standardized-rest-authentication.html</a></p>



<p>This is implemented by adding the following 3 fields to each request as additional CGI parameters:</p>



<ul class="wp-block-list">
<li><strong>expires</strong><br>The time at which this request becomes invalid expressed as a unix timestamp i.e. seconds since 1/1/1970 (see <a href="https://en.wikipedia.org/wiki/Unix_time">Unix time</a> ). This should generally be kept as low as possible &#8211; e.g. less than 60 seconds in the future.&nbsp;</li>



<li><strong>keyId</strong><br>The public key to authenticate against</li>



<li><strong>signature</strong><br>A hash-based message authentication (HMAC) code (see <a href="https://en.wikipedia.org/wiki/Hash-based_message_authentication_code">https://en.wikipedia.org/wiki/Hash-based_message_authentication_code</a> ) as generated by the hash_hmac PHP function (see <a href="http://php.net/manual/en/function.hash-hmac.php">http://php.net/manual/en/function.hash-hmac.php</a>). The data used to generate the HMAC will be the endpoint path combined with the entirety of the query string (see <a href="https://en.wikipedia.org/wiki/Query_string">https://en.wikipedia.org/wiki/Query_string</a>) including the expiry and apiKey fields but excluding the hmac field itself. If data is passed using a POST instead of a GET then the HMAC should be based on what the query string would have looked like if the same data had been passed on the query string (in the same order that they occur in the POST). The HMAC should be generated from the data after it has been URL-encoded. The key used to generate the HMAC will be the private key which corresponds to the public key which has been used.</li>
</ul>



<p>API keys are managed through the Nucleus administrative interface. The API Key administration page can be accessed through the “Misc → API Keys” page. This page lists current API keys and the corresponding private keys and allows new keys to be issued and existing keys to be revoked.</p>



<p class="has-text-align-center"><img fetchpriority="high" decoding="async" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc11In9KYGR26gGwYxraMA_DeYxQ8Dkz5BpndoDV-5dYa1NXENQtynwc2pJWhRGzre2p6V2ZlK2z1OuKzzi6QEOnv7En_daqKIyTteDBReNyDUGNfu4vIk-Mo3kTobdGs0xt7fMmqHQvg2g7KzG_jjK8vs?key=Gl1iYmYNNYtHylR5H3IZ3g" width="602" height="359"></p>



<h3 class="wp-block-heading" id="Signature-Example">2.1. Signature Example&nbsp;</h3>



<p>If the <strong>entries.php</strong> endpoint is to be call with the following parameters:</p>



<ul class="wp-block-list">
<li><strong>awardId </strong>= 12</li>



<li><strong>categoryId </strong>= 34</li>
</ul>



<p>First the the expiry time and API key should add to these fields so that the query string is compiled from the following fields:</p>



<ul class="wp-block-list">
<li><strong>awardId </strong>= 12</li>



<li><strong>categoryId</strong> = 34</li>



<li><strong>expires</strong> = 1462802582 <em>(replace this with a suitable future timestamp)</em></li>



<li><strong>keyId </strong>= 5a3b403d4dcfb84f73f383d2e2b8f352<strong> </strong><em>(replace this with your key ID)</em></li>
</ul>



<p>This can then be converted to a query string thus:</p>



<pre class="wp-block-code"><code>awardId=12&amp;categoryId=34&amp;expires=1462802582&amp;keyId=5a3b403d4dcfb84f73f383d2e2b8f352</code></pre>



<p>The endpoint is added to the front thus:<br></p>



<pre class="wp-block-code"><code>entries.php?awardId=12&amp;categoryId=34&amp;expires=1462802582&amp;keyId=5a3b403d4dcfb84f73f383d2e2b8f352</code></pre>



<p>This is then used to generate the hmac. If the secret is, for example, <strong>8iKDKfYOGfmBuLP+nR/nbU59Sh2rw9KV</strong> then the following PHP code can be used:</p>



<pre class="wp-block-code"><code>hash_hmac('sha256','entries.php?awardId=12&amp;categoryId=34&amp;expires=1462802582&amp;keyId=5a3b403d4dcfb84f73f383d2e2b8f352','8iKDKfYOGfmBuLP+nR/nbU59Sh2rw9KV');</code></pre>



<p>This gives the HMAC:</p>



<pre class="wp-block-code"><code>13d41665334bb60ee8bf7bdee22fe571291cbd3e4eb1f60f05aa31fc576ca2a6</code></pre>



<p><strong>Note </strong>&#8211; that although the request is sent to /api/entries.php, the hash is computed using the endpoint address without the initial “/api/”.</p>



<p>This is then appended to the query string to give the final complete URL </p>



<pre class="wp-block-code"><code>https:&#47;&#47;my.nucleus.domain.com/api/entries.php?awardId=12&amp;categoryId=34&amp;expires=1462802582&amp;keyId=5a3b403d4dcfb84f73f383d2e2b8f352&amp;signature=13d41665334bb60ee8bf7bdee22fe571291cbd3e4eb1f60f05aa31fc576ca2a6</code></pre>



<p>This could equally well be a POST to <a href="https://my.nucleus.domain.com/api/entries.php">https://my.nucleus.domain.com/api/entries.php</a> with the following parameters:</p>



<ul class="wp-block-list">
<li><strong>awardId </strong>= 12</li>



<li><strong>categoryId </strong>= 34</li>



<li><strong>expires </strong>= 1462802582</li>



<li><strong>keyId </strong>= 5a3b403d4dcfb84f73f383d2e2b8f352</li>



<li><strong>signature</strong> = 13d41665334bb60ee8bf7bdee22fe571291cbd3e4eb1f60f05aa31fc576ca2a6</li>
</ul>



<p>When using a post it is important that the parameters are passed in the same order as they were included in the query string when generating the signature.</p>



<h3 class="wp-block-heading" id="Test-Harness,-Client-Library-and-Sample-Code">3. Test Harness, Client Library and Sample Code</h3>



<p>A simple test harness is available in the entry site administrative interface. This page can be accessed through the “Misc → API Test Harness” page. The test harness page also contains links to a PHP Client library to simplify access to the API and some sample code which uses this client library.</p>



<ol class="wp-block-list">
<li>Log into the <strong>Admin Interface</strong></li>



<li>Go to <strong>Control Centre</strong></li>



<li>Select <strong>API Test Harness</strong> in the <strong>System Administration Section</strong></li>



<li>The following page will contain examples and test parameters which can be set.</li>
</ol>



<p><strong>Note </strong>&#8211; you will need a Nucleus Admin user to access this page. Contact the Nucleus Admins and ask them to create a user for you.</p>



<p class="has-text-align-center"><img decoding="async" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfeDk800KuRKcJRbDZZAPzqTkpfV0UA39_mibyU5-iqgleT-EEUCwu5SFkfxjDfZ__LlOQ87FI9-Mj0NzhbvwjqoC0ausaWySVHibkFsKk5JXfQzP6OW5hQbQLiriYF2H_Cm96tzLeaGaD0hY-Crt6Jpw?key=Gl1iYmYNNYtHylR5H3IZ3g" width="519" height="768"></p>



<h3 class="wp-block-heading">3.1. Sample Code: API Wrapper Class</h3>



<pre class="wp-block-code"><code>&lt;?
 
class BAESClient {
	private $keyId;
	private $secret;
	private $baseUrl;
 
	function __construct($baseUrl,$keyId,$secret) {
		$this-&gt;baseUrl = $baseUrl;
		$this-&gt;keyId = $keyId;
		$this-&gt;secret = $secret;
	}
 
	function call($endpoint, $params) {
		ksort($params);
		$url = $this-&gt;baseUrl.'/'.$endpoint.'.php';
 
		$params&#91;'expires'] = time()+60;
		$params&#91;'keyId'] = $this-&gt;keyId;
		$sigStr = $endpoint.'.php?'.http_build_query($params);
 
		$params&#91;'signature'] = hash_hmac('sha256',$sigStr,$this-&gt;secret);
		// for debug
		// echo "$sigStr , $this-&gt;secret\n\n";
		// print_r($params);
		
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL,$url);
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		// for debug
		// curl_setopt($ch, CURLOPT_HEADER, true);
 
		$response = curl_exec ($ch);
		$responseCode = curl_getinfo($ch,CURLINFO_RESPONSE_CODE);
		curl_close ($ch);
 
		if ($responseCode !== 200) {
			if (preg_match('/&lt;title&gt;(.*?)&lt;\/title&gt;/is',$response,$matches)) $errors = array( $matches&#91;1] );
			else $errors = array( $response );
			return array( $responseCode, array(), $errors );
		}
 
		$data = json_decode($response, true);
		if ($data===null) {
			$reponseCode = 500;
			$errors = array("Unexpected content in API response: ".substr($response,0,200));
			return array( $responseCode, array(), $errors );
		}
 
		if (!isset($data&#91;'status']) || !(isset($data&#91;'errors']) || isset($data&#91;'results']))) {
			$reponseCode = 500;
			$errors = array();
			if (!isset($data&#91;'status'])) $errors&#91;] = "API response did not include a status field";
			else $errors&#91;] = "API response did not include errors or results";
			return array( $responseCode, array(), $errors );
		}
 
		if (!isset($data&#91;'errors'])) $data&#91;'errors']=array();
		if (!isset($data&#91;'results'])) $data&#91;'results']=array();
 
		return array( $data&#91;'status'], $data&#91;'results'], $data&#91;'errors'] );
	}
 
}</code></pre>



<h3 class="wp-block-heading">3.2. Sample Code Using Wrapper Class</h3>



<pre class="wp-block-code"><code>&lt;?

include('../../lib/api/BAESClient.php');
 
/* here is an example with some parameters set - you will need to edit the videoId for this to work
$endpoint = 'video';
$params = array(
    'videoId' =&gt; '329',
    'type'  =&gt; 'watch',
    'userId'    =&gt; 'test_watch'
);
*/
$endpoint = 'awards';
$params = array();
 
// You will need to place your API Key ID and Secret key in here...
define('API_KEYID','################################');
define('API_SECRET','################################');
 
// You will need to place the base URL for your BAES installation in here...
define('API_BASE_URL','https://#####.#####.##/api/');
 
$baesClient = new BAESClient( API_BASE_URL, API_KEYID,API_SECRET);
 
header('Content-type: text/plain');
 
list($status, $results, $errors) = $baesClient-&gt;call($endpoint,$params);
 
echo "STATUS=$status\n";
print_r($results);
print_r($errors);
</code></pre>



<h3 class="wp-block-heading">4. Test Harness, Client Library and Sample Code Javascript</h3>



<p>A simple test harness is available in the entry site administrative interface. This page can be accessed:</p>



<ol class="wp-block-list">
<li>Log into the <strong>Admin Interface</strong></li>



<li>Go to <strong>Control centre</strong></li>



<li>Select <strong>API Test Harness</strong> in the <strong>System Administration Section</strong></li>



<li>The following page will contain examples and test parameters which can be set.</li>
</ol>



<p>The test harness page also contains client side and server side sample code.</p>



<p>A Javascript API Client library is available here: https://&lt;Base URL for your BAES installation&gt;/javascript/nucleusApiClient.mjs</p>



<p><strong>Note</strong>: The Javascript client is designed for use in both server side and client side (in browser) applications.</p>



<p><strong>***PLEASE NOTE***</strong> that when using the API client in a browser you MUST NOT include the API key and secret. Instead you must implement a small server-side endpoint to implement the request signing. An example of what the server side signing endpoint is included below.</p>



<h3 class="wp-block-heading">4.1. Client Side Example</h3>



<p>Add this code to the web page</p>



<pre class="wp-block-code"><code>&lt;script type="module"&gt;

// If this module fails to load you may need to host the nucleusApiClient.mjs file on the same domain as the page the code is running in
import NucleusClient from 'https://&lt;Base URL for your BAES installation&gt;/javascript/nucleusApiClient.mjs'

// Replace "https://app.your-company.com/api/nucluesRequestSigningURL.php" with the appropriate URL on the next line
var client = new NucleusClient('https://&lt;Base URL for your BAES installation&gt;/api/','https://app.your-company.com/api/nucluesRequestSigningURL.php');

// In this example we are going to get the details for the award with ID 280. Your award ID will be different
var endpoint = 'awards';
var awardId = 280;
var response = client.call(endpoint,{
    'awardId' : awardId,
    'expires' : Math.round((new Date()).getTime()/1000)+60
}).then(function(result) {
    // Do something with the result here
    console.log(result);
});
&lt;/script&gt;</code></pre>



<p>Add code something like this on your external application server at <a href="https://app.your-company.com/api/nucleusRequestSigningURL.php">https://app.your-company.com/api/nucleusRequestSigningURL.php</a></p>



<pre class="wp-block-code"><code>&lt;?
/*
----------------------------
Add in user authentication here in using whatever mechanism your system uses
----------------------------
*/

if(isset($_POST&#91;'endpoint']) &amp;&amp; !empty($_POST&#91;'endpoint'])) {
    $keyId = '&lt; PUT YOUR API KEY ID HERE &gt;';
    $secret = '&lt; PUT YOUR API SECRET HERE &gt;';
    $params = $_POST;
    $endpoint = $params&#91;'endpoint'];
    unset($params&#91;'endpoint']);
    $params&#91;'keyId'] = $keyId;
    $sigStr = $endpoint.'.php?'.http_build_query($params);
    $signature = hash_hmac('sha256',$sigStr,$secret);
} else {
    $signature = '';
}
echo json_encode(array(
    'signature' =&gt; $signature,
    'keyId' =&gt; $keyId
));
exit;
?&gt;</code></pre>



<h3 class="wp-block-heading">4.2. Server Side Example</h3>



<p>In order to run this code you will first need to:</p>



<ol class="wp-block-list">
<li>Download the javascript client library from https://&lt;Base URL for your BAES installation&gt;/javascript/nucleusApiClient.mjs</li>



<li>npm install node-fetch</li>
</ol>



<pre class="wp-block-code"><code>import NucleusClient from './nucleusApiClient.mjs';

var client = new NucleusClient('https://&lt;Base URL for your BAES installation&gt;/api/','&lt; PUT YOUR API KEY ID HERE &gt;','&lt; PUT YOUR API SECRET HERE &gt;')

// In this example we are going to get the details for the award with ID 280. Your award ID will be different
var endpoint = 'awards';
var awardId = 280;
var response = client.call(endpoint,{
    'awardId' : awardId,
    'expires' : Math.round((new Date()).getTime()/1000)+60
}).then(function(result) {
    // Do something with the result here
    console.log(result);
});</code></pre>



<h3 class="wp-block-heading">5. Endpoints</h3>



<p>The endpoints are listed below. Endpoints may accept additional query parameters as detailed below. Some of these parameters are mandatory &#8211; this is indicated below where this applies. All endpoints will return data as a JSON encoded data structure (see <a href="http://json.org/">http://json.org/</a> ).</p>



<p>The data structure returned will be an associative array with three keys:</p>



<ul class="wp-block-list">
<li><strong>status</strong>: A numeric status code using the same codes as conventional http transfers i.e. 200 = OK, 403 = Forbidden etc</li>



<li><strong>errors</strong>: An array of human-readable error messages</li>



<li><strong>results</strong>: An array of associative arrays. If there are no results this will be an empty array (but this will not be treated as an error).</li>
</ul>



<h3 class="wp-block-heading">5.1. /api/awards.php</h3>



<p>There are no additional input parameters options for this endpoint.</p>



<p>This endpoint will return an array of active awards with the following parameters for each item</p>



<ul class="wp-block-list">
<li><strong>awardId</strong><br>The award ID</li>



<li><strong>name</strong><br>The name of the award</li>



<li><strong>orderNumber</strong><br>An integer to indicate what order awards should be displayed in</li>



<li><strong>opensAt</strong><br>The date and time when the award is open for entries expressed as a unix timestamp</li>



<li><strong>lastCreateDate</strong><br>The date and time when award closes for new entries expressed as a unix timestamp</li>



<li><strong>lastSubmitDate</strong><br>The date and time when award closes for submission of existing (already created) entries expressed as a unix timestamp</li>
</ul>



<h3 class="wp-block-heading">Example</h3>



<h4 class="wp-block-heading">Request</h4>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<pre class="wp-block-code"><code>{ }</code></pre>
</div>
</div>



<h4 class="wp-block-heading">Response</h4>



<pre class="wp-block-code"><code>&#91;
    {
        "awardId": "123",
        "name": "Jedi Award 2023",
        "orderNumber": "1",
        "opensAt": "1680126900",
        "lastCreateDate": "1698792900",
        "lastSubmitDate": "1698792900"
    },
    {
        "awardId": "124",
        "name": "Jedi Award 2024",
        "orderNumber": "1",
        "opensAt": "1711752900",
        "lastCreateDate": "1722376500",
        "lastSubmitDate": "1722376500"
    },
    {
        "awardId": "127",
        "name": "Short Jedi Award 2024",
        "orderNumber": "2",
        "opensAt": "1665438900",
        "lastCreateDate": "1728597300",
        "lastSubmitDate": "1728510900"
    }
]
</code></pre>



<h3 class="wp-block-heading">5.2. /api/categories.php</h3>



<p>Additional parameters for this endpoint are:</p>



<ul class="wp-block-list">
<li><strong>awardId</strong> (mandatory)<br>The award for which categories should be returned</li>
</ul>



<p>This endpoint will return an array of categories for the specified award which will include the following parameters for each category:</p>



<ul class="wp-block-list">
<li><strong>categoryId</strong><br>The ID for the category</li>



<li><strong>name</strong><br>The name of the category</li>



<li><strong>type</strong><br>This is either “Performance” or “Production”</li>



<li><strong>introMessage</strong><br>The viewing portal introductory message as defined in the category setup on BAFTA Nucleus</li>



<li><strong>showOnViewingPortal</strong><br>Either 0 (do not show) or 1 (show) as set in the category setup in BAFTA Nucleus</li>



<li><strong>votingSiteCategoryId</strong><br>The “Voting site category ID” as specified for the category in the category setup in BAFTA Nucleus</li>
</ul>



<h3 class="wp-block-heading">Example</h3>



<h4 class="wp-block-heading">Request</h4>



<pre class="wp-block-code"><code>{
    "awardId": "123"
}</code></pre>



<h4 class="wp-block-heading">Response</h4>



<pre class="wp-block-code"><code>&#91;
    {
        "categoryId": "123",
        "name": "Best Hair",
        "introMessage": "",
        "showOnViewingPortal": "1",
        "votingSiteCategoryId": "0"
    },
    {
        "categoryId": "124",
        "name": "Best Mind Bending Skills",
        "introMessage": "",
        "showOnViewingPortal": "1",
        "votingSiteCategoryId": "0"
    },
    {
        "categoryId": "125",
        "name": "Most cool",
        "introMessage": "",
        "showOnViewingPortal": "1",
        "votingSiteCategoryId": "0"
    }
]</code></pre>



<h3 class="wp-block-heading">5.3. /api/entries.php</h3>



<p>Additional parameters for this endpoint</p>



<ul class="wp-block-list">
<li><strong>awardId</strong> (mandatory)<br>The award for which entry data should be returned.</li>



<li><strong><strong>status (</strong></strong><br>If passed in then only entries with this status will be returned. Valid values are “unsubmitted”,”submitted” or “approved”.</li>



<li><strong>categoryId</strong><br>The categoryId for which entries should be returned. If specified, only entries which are in this category will be returned.</li>



<li><strong>entryId</strong><br>If this is specified then an array containing data about only this single entry will be returned. If this is combined with any other filters and the other filters do not match this entry ID then an empty set will be returned.</li>



<li><strong>titleEquals</strong><br>If this is specified then only entries whose title matches the value provided will be returned. This filter is case insensitive. This can be combined with categoryId and status if you want to find only entries with the specified title, in the specified category and with the specified status.</li>



<li><strong>titleContains</strong><br>If this is specified then only entries whose title contains the string provided will be returned. This filter is case insensitive. This can be combined with categoryId and status if you want to find only entries containing this text in the specified category and with the specified status.</li>
</ul>



<p>This endpoint will return an array of approved entries with the following parameters for each entry:</p>



<ul class="wp-block-list">
<li><strong>entryId</strong><br>The entry ID</li>



<li><strong>entryTitle</strong><br>The title of the entry &#8211; this will be taken from the question on the entry form for which the &#8220;Include on Entry list for entrant&#8221; field has been set to &#8220;1&#8221;.</li>
</ul>



<p><strong>N.B If no questions has been defined with &#8220;Include on Entry list for entrant&#8221; set to “1” then no entries will be returned by the API.</strong></p>



<ul class="wp-block-list">
<li><strong>data</strong><br>The data from the entry form which has been given a &#8220;<strong>Title for viewing portal</strong>&#8220;. This data will be an associative array keyed on the field name as specified for the corresponding question definition in the &#8220;<strong>Title for viewing porta</strong>l&#8221; field. Where the data field is a “<strong>Media Item</strong>” then the value for the question will be the string ‘<strong>mediaItem</strong>:’ followed by the media item type, followed by a numeric ID for the media item which can be passed to the <strong>mediaItem </strong>endpoint below e.g. “<strong>mediaItem:video:6</strong>”<br>Media Item Types are as follows:
<ul class="wp-block-list">
<li>Image</li>



<li>Video</li>



<li>Audio</li>



<li>Document</li>
</ul>
</li>



<li><strong>categoryNames</strong><br>An array of category names</li>



<li><strong>categoryIds</strong><br>An array of category ID&#8217;s</li>
</ul>



<h3 class="wp-block-heading">Example</h3>



<h4 class="wp-block-heading">Request</h4>



<pre class="wp-block-code"><code>{
    "awardId": "19",
    "titleContains": "day",
    "status": "submitted"
}</code></pre>



<h4 class="wp-block-heading">Response</h4>



<pre class="wp-block-code"><code>&#91;
    {
        "entryId": "12345",
        "status": "submitted",
        "categoryNames": &#91;
            "Best Hair",
            "Most Cool",
        ],
        "categoryIds": &#91;
            ”124”,”125”
        ],
        "entryTitle": "bedtime Jedi",
        "data": {
            "Main production country": "Zag",
            "Length": "4800",
            "Language": &#91;
                "Zagdorp"
            ],
            "Year of Production": "2023",
            "Director 1": "James Jameson",
            "Cast 1": "Bob Ambleforth",
            "Cast 2": "",
            "Synopsis": "Jedi gets tired\r\nJedi goes to bed\r\nTHE END",
            "Visual Effects 1": "Fizz bang",
            "Visual": "mediaItem:image:999",
            "Screenwriter 1": "Simon Jones",
            "Co-producer 1": "Jim Joshing",
            "Film website": "",
            "Further images 1": "mediaItem:image:672",
            "Main still \/ preview image": "mediaItem:image:349",
            "Film excerpt 1": "mediaItem::0",
            "Film file": "mediaItem:video:263"
        }
    },
    {
         "entryId": "12345",
        "status": "submitted",
        "categoryNames": &#91;
            "Best Mind Bending Skills",
            "Best Hair"
        ],
        "categoryIds": &#91;
            "123",”124”
        ],
        "entryTitle": "Holiday Time Jedi",
        "data": {
            "Main production country": "Zog",
            "Length": "4800",
            "Language": &#91;
                "Zorgon"
            ],
            "Year of Production": "2023",
            "Director 1": "James Anderson",
            "Cast 1": "Bob Wimblehurst",
            "Cast 2": "",
            "Synopsis": "Jedi goes on holiday\r\nGreat hilarity ensues\r\n",
            "Visual Effects 1": "Bag Whallop",
            "Visual": "mediaItem:image:5005",
            "Screenwriter 1": "Simon Beetles",
            "Co-producer 1": "Jim Anderson",
            "Film website": "",
            "Further images 1": "mediaItem:image:7350",
            "Main still \/ preview image": "mediaItem:image:7349",
            "Film excerpt 1": "mediaItem::273",
            "Film file": "mediaItem:video:2687"
        }
    }
]</code></pre>



<h3 class="wp-block-heading">5.4. /api/mediaItem.php</h3>



<p><strong>Note </strong>&#8211; Only MediaItems associated with submitted entries can be retrieved</p>



<p>Additional parameters for this endpoint</p>



<ul class="wp-block-list">
<li><strong>mediaItemId</strong> (mandatory)<br>The ID of the mediaItem being requested.<br>This can be a single ID, or a comma separated list of up to 100 media item IDs.<br>If multiple ID’s are provided they MUST all be of the same type i.e. all video, or all images.<br>If multiple media items are required please try to request these in one go rather than making many separate individual requests.</li>



<li><strong>type</strong> (mandatory)<br>When the media type is “video” then this determines whether a link to the HLS stream, a transcoded MP4 file, or the originally uploaded file should be returned as follows:
<ul class="wp-block-list">
<li>stream (JSON data including both HLS m3u8 file and mp4 alternative will be returned. This JSON can be fed straight to a BitMovin player)</li>



<li>download (the URL for a transcoded MP4 file will be returned)</li>



<li>original (the URL for the original untranscoded file will be returned)</li>



<li>preview (the URL for a thumbnail image for the video)</li>
</ul>
</li>



<li>When the media type is “image” this determines whether the original file is downloaded or a resized preview version is supplied. Options for images are:
<ul class="wp-block-list">
<li>preview</li>



<li>original</li>
</ul>
</li>



<li>When the media type is “document” then only valid type is:
<ul class="wp-block-list">
<li>download</li>
</ul>
</li>
</ul>



<p>If you supply multiple You can only request one type of media in one call.</p>



<ul class="wp-block-list">
<li><strong>viewerId </strong>(mandatory)<br>All watch or download requests are logged by BAFTA Nucleus. This must be the numeric ID for a viewer as defined in Nucleus. The viewer must have permission to view the requested mediaItem(s). If the viewer specified doesn’t have permission to view any of the requested mediaItems then these mediaItems will simply be completely omitted from the data returned.</li>



<li><strong>validityHours</strong><br>The duration for which the link which is returned should remain functional (in hours). After this time the video will no longer be playable. The validity time for the URL starts from when the URL is generated by the API. If no value is specified then the default value used by the entry site will be substituted</li>



<li><strong>maxUses</strong><br>The number of times that the link can be used to access the content. If this parameter is missing it defaults to 3. If unlimited access is required this should be set to some arbitrarily high number e.g. 9999</li>
</ul>



<p>This endpoint will return an associative array of URL’s keyed on the mediaItemId.</p>



<p>An example of the data returned when requesting multiple mediaItems is included below.&nbsp;</p>



<p><strong>N.B. This example is just for illustration and couldn’t actually be generated on the live system because the data in this example includes mediaItems of differing types </strong>&#8211; on the live system you can only request items of one type at a time. If you include ID’s for items that don’t support this type then the erroneous ID’s will still be included in the output data, but with an “Invalid Type” error. So, if the requested type is “original” then you <strong>can </strong>request multiple mediaItems of any variety in the same request (since videos, images and documents all support the “original” type). If the requested type is “preview” then you can request images and videos, but documents will return an “Invalid type” error because documents don’t support the preview type</p>



<pre class="wp-block-code"><code>{
    // Video stream
    289: {
            url: https://…&lt;link to get json stream data&gt;…
    },
 
    // Video mediaItem requested with type=download
    289: {
            url: https://…&lt;link to download mp4&gt;…
    },
 
    // Video mediaItem requested with type=original
    289: {
            url: https://…&lt;link to download original video file&gt;…
    },
 
    // Video mediaItem requested with type=preview
    289: {
            url: https://…&lt;link to download thumbnail image&gt;…
    },
 
    // Image mediaItem requested with type=preview
    289: {
            url: https://…&lt;link to download thumbnail image&gt;…
    },
 
    // Image mediaItem requested with type=download
    289: {
            url: https://…&lt;link to download original image file&gt;…
    },
 
    // mediaItem requested which is incompatible with the requested type
    // e.g. when a “preview” of a document is requested
    288: {
     error: “Invalid Type”
    }
}</code></pre>



<p>The link to get json stream data in the example above will return JSON data in this format.</p>



<pre class="wp-block-code"><code>{
	"result": {
		"hls": "https:\/\/d3cszrd24af8ic.baftaelectron.com\/hls\/…\/index.m3u8",
		"mp4": &#91;{
			"url": "https:\/\/d3cszrd24af8ic.cloudfront.net\/….",
			"type": "video\/mp4",
			"height": "480",
			"label": "480p"
		}, {
			"url": "https:\/\/d3cszrd24af8ic.cloudfront.net\/…",
			"type": "video\/mp4",
			"height": "720",
			"label": "720p"
		}]
	}
}</code></pre>



<h3 class="wp-block-heading">API Information for Nucleus Admins</h3>



<p>The above instructions should be given to your developers but there is some setup required by Nucleus Admins which is covered in the above guide. For convenience this has been broken down here as non-developers might find the above instructions confusing.</p>



<p>The API is accessed using existing functionality, including an admin account, Viewing Portal Title, Award and Category ID’s. Largely an award using the API should be set up in the normal way but it is likely developers will ask you for key information items and this guide will enable you to prepare this form them in advance.</p>



<p><strong>Note </strong>&#8211; Only Entry Data and MediaItems associated with Approved entries can be retrieved.</p>



<h3 class="wp-block-heading">Items to Prepare in Advance</h3>



<ul class="wp-block-list">
<li><strong>Generate an Admin Account </strong>-The API will access the data using an admin account and the developer will need this in order to generate a test harness. When you create the account make sure it only has access the projects the API needs to access. The API can only export form Awards where it has permissions. For more information on creating accounts read the <a href="https://nucleus-help.bmt.bafta.org/help-articles/creating-an-admin-user-for-the-admin-interface/">Admin User guide</a>.</li>



<li><strong>Provide the Award ID/s</strong> &#8211; Each Award has an ID and the developer will need this to access the data. In the <strong>Admin Interface</strong>, go to <strong>Actions&gt;Awards</strong>. On the table take the number from the <strong>ID </strong>column for all awards you want the developer to access.</li>



<li><strong>Provide the Category ID/s</strong> &#8211; Each Category has an ID and the developer will need this to access the data. In the <strong>Admin Interface</strong>, go to <strong>Actions&gt;Categories</strong>. On the table take the number from the <strong>ID </strong>column for all categories you want the developer to access.</li>



<li><strong>Define a Question for Include on Entry List for Entrants</strong> &#8211; This is normally completed as part of the award set-up but has been included here as a reference. In order for the API to work one question needs to be set to appear on the <strong>Entrant Dashboard</strong>. To action this in the <strong>Admin Interface</strong> for to <strong>Actions&gt;Questions</strong>. Look in the <strong>Display on Entrant</strong> column for a 1. If you can’t find this, choose a question, title is the best, and click <strong>Edit</strong>. On the next screen under <strong>Options </strong>select <strong>Position 1</strong> for I<strong>nclude on Entry list for entrant</strong>.</li>



<li><strong>Set a Title for API name</strong> &#8211; for each item of data that you wish the API to access it must have a valid name set in the API name field. To set this in the <strong>Admin Interface</strong> for to <strong>Actions&gt;Questions</strong>. Choose a question where you wish to include the data set and click <strong>Edit</strong>. On the next screen under <strong>Options </strong>enter a value in <strong>API name</strong>. This data set will not be accessible for the API.</li>
</ul>



<h3 class="wp-block-heading">How to Generate an API Key</h3>



<p>The developer will not be able to access the data without a valid API key. The developers, once they have an account, may generate this themselves but as the process is simple it can speed up the process if you generate this in advance and send to your developer.</p>



<ol class="wp-block-list">
<li>Log into the <strong>Admin Interface</strong></li>



<li>Go to <strong>control centre</strong></li>



<li>Under <strong>System Administration</strong> select <strong>API Keys</strong></li>



<li>On the next page click <strong>Add</strong></li>



<li>An API <strong>Key </strong>and <strong>Secret </strong>will be generated</li>



<li>Copy these and keep them secure as the developer will need both</li>



<li>Enter a name in <strong>Notes </strong>so you can retrieve the key and secret in future</li>



<li>Click <strong>Save and Close</strong></li>
</ol>



<h3 class="wp-block-heading" id="How-to-Set-a-Question-in-the-API-to-be-Displayed-in-the-Viewing-Interface">How to Set a Question in the API to be Displayed in the Viewing Interface</h3>



<p>There are cases where a question needs to be used in the API to be displayed in the Viewing Interface. This is something you can set from the Question Settings.</p>



<ol class="wp-block-list">
<li>Log into the <strong>Admin Interface</strong></li>



<li>Go to <strong>Award>Form setup/Question list</strong></li>



<li>Click <strong>Edit </strong>on the question you want to display in the Viewing Portal</li>



<li>Scroll down to the <strong>Options </strong>section in settings page </li>



<li>Fill in the<strong> API name </strong>field. Please note that this must be unique as it won’t work if there are duplicates names in the same award</li>



<li>Click <strong>Save &amp; Close</strong></li>



<li>Your question will now appear in the API</li>
</ol>



<p><strong>Note </strong>&#8211; Once you set this up, always check the Viewer’s permission have been set up accordingly. This <a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-set-up-viewers-judges-for-your-award/">guide </a>explains how to give Judges permissions to Awards and specific Categories.</p>



<p><strong>Important Note</strong> &#8211; For the API Name field to be displayed, the Award <strong>must </strong>be <strong>Active</strong>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Automated Award Deletion</title>
		<link>https://nucleus-help.bmt.bafta.org/help-articles/automated-award-deletion/</link>
		
		<dc:creator><![CDATA[David Lortal]]></dc:creator>
		<pubDate>Fri, 07 Oct 2022 18:04:27 +0000</pubDate>
				<guid isPermaLink="false">https://nucleus-help.bmt.bafta.org/?post_type=lsvr_kba&#038;p=865</guid>

					<description><![CDATA[Nucleus provides several automated tidy up processes to ensure that the data held within the system is not messy, to keep the size of stored data manageable and to support GDPR requirements. There are automated processes to delete Media Library Items, Entrant Users and entries. There is a admin controlled function on the award to [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Nucleus provides several automated tidy up processes to ensure that the data held within the system is not messy, to keep the size of stored data manageable and to support GDPR requirements. There are automated processes to delete <a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-use-the-media-library-admin-users/">Media Library Items</a>, Entrant Users and entries.</p>



<p>There is a admin controlled function on the award to delete all the Award, which is a mandatory function and all related data. Admins set a date when the award will be deleted. Any associated Media Item (Videos/Audio/Images/Documents) will become unassociated from their entries and if not linked with another entry will be deleted and clean up by the automate tidy up rules.</p>



<p>This feature can be used to prevent Electron usage becoming too high and ensuring that entry data is not kept longer than required, reducing backup sizes and as a consequence AWS costs.</p>



<p>The date set must be a minimum of 6 months after the submission date and more than 7 days in the future from the current date.</p>



<p>Once the date is set there are two reminder emails that will be sent to all admin users for the award and a confirmation that the data has been deleted. Follow the instructions below to set up the date and to set the date for Entry Data Deletion.</p>



<p><strong>Note </strong>&#8211; All the automated deletions rules can be amended at client request via a support ticket.</p>



<h3 class="wp-block-heading" id="How-to-set-the-Entry-Deletion-Date">How to set the Entry Deletion Date</h3>



<p>The date is a mandatory field on the Award Settings page which means it is not possible to save an award without specifying a date. These instructions can be used to update the date to remove data sooner.</p>



<ol class="wp-block-list">
<li>Log into the <strong>Admin Interface</strong></li>



<li>Go to <strong>Awards &amp; Projects</strong></li>



<li>Click on <strong>Settings</strong> on the desired award.</li>



<li>Scroll down to find the <strong>Delete Award On</strong> setting, and enter a deletion date of your choice. Note this must be a minimum of 6 months after the <strong>Last submit date</strong>. The system will prevent you from submitting a date that comes sooner than the 6 months, and an error message will be displayed.</li>



<li>Click <strong>Save</strong></li>
</ol>



<h3 class="wp-block-heading" id="How-to-set-up-the-Warning-Emails-for-Admin-users">How to set up the Warning Emails for Admin users</h3>



<p>There are two warning templates and a deletion confirmation template that can be activated for admin users. These are recommended as they provide admins with an opportunity to prevent the deletion of entry data if required.</p>



<ul class="wp-block-list">
<li><strong>admin/awarddeletewarn7</strong> &#8211; sent 7 days before the deletion</li>



<li><strong>admin/awarddeletewarn24</strong> &#8211; sent 24 hours before the deletion</li>



<li><strong>admin/awarddeletenotify</strong> &#8211; sent after the entries have been deleted</li>
</ul>



<p>For full information on how to manage and edit email <a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-manage-your-email-templates/">templates review the guide</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Automatically Rejecting Video Files Based on a Defined Specification</title>
		<link>https://nucleus-help.bmt.bafta.org/help-articles/automatically-rejecting-video-files-based-on-a-defined-specification/</link>
		
		<dc:creator><![CDATA[Elisabetta Mezzaro]]></dc:creator>
		<pubDate>Thu, 01 Sep 2022 09:51:49 +0000</pubDate>
				<guid isPermaLink="false">https://nucleus-help.bmt.bafta.org/?post_type=lsvr_kba&#038;p=794</guid>

					<description><![CDATA[Due to the wide range of methods of producing video files, they can vary in quality drastically. Although in guidelines in the Nucleus CMS it is possible to specify file criteria, sometimes this is not enough and the task for admin users to QC and review video files is not a small one. Therefore it [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Due to the wide range of methods of producing video files, they can vary in quality drastically. Although in guidelines in the Nucleus CMS it is possible to specify file criteria, sometimes this is not enough and the task for admin users to QC and review video files is not a small one. Therefore it is possible on a per instance basis to restrict the video specification and for Nucleus to automatically reject files that do not automatically meet the spec after upload. To enable this on your instance, please create a <a href="https://support.bafta.org/">support ticket</a> and request to automatically reject video files including the required criteria.</p>



<h3 class="wp-block-heading" id="How-does-Nucleus-Automatically-Reject-Video-Files">How does Nucleus Automatically Reject Video Files</h3>



<p>The first step is to decide on the criteria of the files that you want entrants to provide. The following criteria can be used as part of the specification:</p>



<ul class="wp-block-list">
<li><strong>Resolution</strong> &#8211; for example: HD 1920-1080</li>



<li><strong>Codec </strong>&#8211; for example: H264 Progressive</li>



<li><strong>Sound </strong>&#8211; for example: AAC 44KHz</li>



<li><strong>File Type</strong> &#8211; for example: .mov or .mp4</li>
</ul>



<p><strong>Note</strong> &#8211; the size of the file can be restricted on a per question basis and this functionality is covered in the <a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-use-the-media-library-admin-users/">Media Library guide</a></p>



<p>Nucleus can only scan the metadata in the file when it has completed upload.</p>



<ul class="wp-block-list">
<li>If the file meets the requirements then it is accepted and no action is taken</li>



<li>If the file does not meet the requirements then an email is sent to the user and the file is automatically deleted</li>
</ul>



<h3 class="wp-block-heading" id="How-to-Set-up-The-Rejection-Email-Template">How to Set up The Rejection Email Template</h3>



<p>For full information on managing email templates review the <a href="https://nucleus-help.bmt.bafta.org/help-articles/how-to-manage-your-email-templates/">email template guide</a>. To ensure that emails are sent to users when their videos are rejected admin users will need to set up the <strong>mediaItem/fileAssociationRemoved</strong> template.</p>



<p>In this template explain to the user that the file they provided did not meet the required specification, that the file has been deleted and that the entrant needs to provide a new file. We recommend also including the specification.</p>



<p>To personalise the email you can include the following special values alongside the usual values:</p>



<ul class="wp-block-list">
<li><strong>@@mediaItem_title@@</strong> &#8211; inserts the title of the media item as provided by the entrant</li>



<li><strong>@@mediaItem_id@@</strong> &#8211; inserts the id of the media item</li>
</ul>



<p>Once the copy and subject have been provided and the template enabled it will be sent to entrants when their videos are rejected.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
