Introduction
This is the official public documentation for The Dispute Service Disputes API.
TDS exposes a REST based API that allows 3rd party companies to use their dispute management service by submitting dispute related data that will then be managed by the adjudication team.
The adjudication results will then be passed over to the dispute requester via Webhook to the provided endpoint.
TDS can also send regular dispute status updates via Webhook if the requester is able to provide an endpoint for it.
Environments
TDS will expose a staging environment, that suppliers can use to test their integration end-to-end and create test data, and the production environment where the live version of the API is hosted and live data is flowing.
| Enviromnent | Endpoint |
|---|---|
| Production | TBC |
| Staging | https://uat-tds.cs87.force.com/services/apexrest/v1/disputes |
Authentication
In order to submit disputes via the API, clients will need to pass a token with every request. For every new client that requests access, a new API account will be set up and TDS will provide a set of credentials.
These credentials will include:
Account ID
- identifies the supplier account and it is the same across all environments
client_id
- unique identifier for the application, should be different across environments
client_secret
- key used to sign the token hash, should also different across environments
For every environment that TDS exposes the API(production or sandboxes), although the Account ID will be the same, a different set of client credentials will be provided.
Token Header
Your token will be passed in the Token
HTTP Header and should have the following format:
<account_ID>-<timestamp>-<hmac>
account_ID
- used to track the supplier account ID
timestamp
- milliseconds since Unix Epoch time; any timestamp within a 5 minute window(between
client request and the moment that the API processes the request) will be accepted, to cover for a potential
delay between systems
hmac
- this will be a computed hash of a string containing the client credentials and the timestamp parameters
Token generation
Step 1 - generating the url parameter string
Use your client credentials and Unix time to generate a url-param string like below
client_id=<your_client_id>&client_secret=<your_client_secret>×tamp=<current_unix_time>
Step 2 - hashing
Use SHA1 algorithm to generate a HMAC of the url string using your client_secret
as the private key.
Step 3 - map it to Token header
Concatenate your account ID, timestamp and HMAC in a string like below
Finally, use the outputs generated above to form your token like below
<account_ID>-<timestamp>-<hmac>
And map it to your Token
HTTP Header in your HTTP Request.
| HTTP Header | Value |
|---|---|
| Token | <account_ID>-<timestamp>-<hmac> |
Field marked with < > should be replaced with the correct outputs.
Example
Below is an example of token generation.
| Parameters | Value |
|---|---|
| account_id | supplierX |
| client_id | iy8oiyuy809piohSd |
| client_secret | 2e9ifb809!s23e723028ffLL |
| timestamp |<PHONE_NUMBER>000 |
Step 1
This will result in the string below:
client_id=iy8oiyuy809piohSd&client_secret=2e9ifb809!s23e723028ffLL×tamp=1576769124000
Step 2
The SHA1 digest using the client_secret as private key should be:
b4072b847c5c3658e3f293267363c9c545fa034c
Step 3
HTTP Token header will then look like:
Token
:supplierX-1576769124000-b4072b847c5c3658e3f293267363c9c545fa034c
Create Disputes
Introduction
Dispute data submission should be done via JSON payload and will include dispute related context. Parameter names and field types should comply to the schema provided for the endpoint.
A strict level of validation will be performed on the payload, to check value integrity and ensuring that mandatory information is being provided correctly and within the allowed value sets when those apply.
Any attempt to send duplicate dispute, dispute_line, tenancy or evidence objects will cause the payload to be rejected.
Payload Object Description
The payload should be a JSON object contain the key parameters described below.
| Key Name | Mandatory | Object Type | Description |
|---|---|---|---|
| agent | No | Object | Agent related to the dispute |
| branch | No | Object | Agency branch of the agent related to dispute |
| tenant | Yes | Array of Objects | List of tenants related to dispute |
| landlord | Yes | Object | Landlord related to dispute |
| tenancy | Yes | Object | Related Tenancy information such as address and start dates |
| dispute | Yes | Object | Dispute information |
| dispute_line | Yes | Array of Objects | List of claim types and amounts for dispute |
| evidence | Yes | Array of Objects | List of evidence information such as file names and resource url |
Object Schemas
Below are the schemas for the objects described above.
agent
| Parameter | Field Type | Value Set | Mandatory | Description |
|---|---|---|---|---|
| id | String(244) | - | Yes | unique identifier |
| branch_id | String(244) | - | Yes | agent's branch unique identifier |
| firstname | String(40) | - | Yes | first name |
| lastname | String(80) | - | Yes | surname |
| phone | String(40) | - | No | land line number |
| mobile | String(40) | - | No | mobile phone number |
| String(80) | - | Yes | email address | |
| birth_date | Date(YYYY-MM-DD) | - | No | birth date |
| salutation | Enum(10) | Mr., Ms., Mrs., Dr., Prof., Mx. | No | salutation |
| job_title | String(128) | - | No | job title |
| created_date | Date/time(YYYY-MM-DDTHH:mm:ssZ) | - | Yes | resource creation date and time |
branch
| Parameter | Field Type | Value Set | Mandatory | Description |
|---|---|---|---|---|
| id | String(244) | - | Yes | unique identifier |
| name | String(255) | - | Yes | agencie's branch name |
| phone | String(40) | - | No | landline number |
| postcode | String(20) | - | No | address post code |
| street | String(255) | - | No | address street name |
| city | String(40) | - | No | city name |
| country | String(80) | - | No | country name |
| website | String(255) | - | No | website |
| created_date | Date/time(YYYY-MM-DDTHH:mm:ssZ) | - | Yes | resource creation date and time |
tenant
| Parameter | Field Type | Value Set | Mandatory | Description |
|---|---|---|---|---|
| id | String(244) | - | Yes | unique identifier |
| firstname | String(40) | - | Yes | first name |
| lastname | String(80) | - | Yes | surname |
| phone | String(40) | - | No | land line number |
| mobile | String(40) | - | No | mobile phone number |
| String(80) | - | Yes | email address | |
| birth_date | Date(YYYY-MM-DD) | - | No | birth date |
| salutation | Enum(10) | Mr., Ms., Mrs., Dr., Prof., Mx. | No | salutation |
| job_title | String(128) | - | No | job title |
| created_date | Date/time(YYYY-MM-DDTHH:mm:ssZ) | - | Yes | resource creation date and time |
landlord
| Parameter | Field Type | Value Set | Mandatory | Description |
|---|---|---|---|---|
| id | String(244) | - | Yes | unique identifier |
| firstname | String(40) | - | Yes | first name |
| lastname | String(80) | - | Yes | surname |
| phone | String(40) | - | No | land line number |
| mobile | String(40) | - | No | mobile phone number |
| String(80) | - | Yes | email address | |
| birth_date | Date(YYYY-MM-DD) | - | No | birth date |
| salutation | Enum(10) | Mr., Ms., Mrs., Dr., Prof., Mx. | No | salutation |
| job_title | String(128) | - | No | job title |
| postcode | String(20) | - | No | address post code |
| street | String(255) | - | No | address street name |
| city | String(40) | - | No | city name |
| country | String(80) | - | No | country name |
| created_date | Date/time(YYYY-MM-DDTHH:mm:ssZ) | - | Yes | resource creation date and time |
tenancy
| Parameter | Field Type | Value Set | Mandatory | Description |
|---|---|---|---|---|
| id | String(244) | - | Yes | unique identifier |
| postcode | String(20) | - | Yes | address post code |
| street | String(255) | - | Yes | address street name |
| city | String(40) | - | Yes | city name |
| country | String(80) | - | Yes | country name |
| start_date | Date(YYYY-MM-DD) | - | Yes | start date of tenancy as per tenancy agreement |
| end_date | Date(YYYY-MM-DD) | - | Yes | expected end date of tenancy as per the tenancy agreement |
| deposit_amount | Double(16,2) | - | Yes | total value of the deposit |
| rent_amount | Double(16,2) | - | No | rent amount payable as per the tenancy agreement. |
| nr_of_tenants | Integer(3) | - | No | total number of tenants allocated to the tenancy |
| reference | String(255) | - | Yes | reference for tenancy, policy or deposit |
| customer_id | String(244) | - | Yes | unique id of Landlord or Branch that paid the deposit, police or fee |
| customer_type | Enum(255) | Landlord, Branch | Yes | specifies the customer type, Branch or Landlord |
| created_date | Date/time(YYYY-MM-DDTHH:mm:ssZ) | - | Yes | resource creation date and time |
dispute
| Parameter | Field Type | Value Set | Mandatory | Description |
|---|---|---|---|---|
| id | String(244) | - | Yes | unique identifier |
| tenancy_id | String(244) | - | Yes | unique id of the dispute's related tenancy |
| disputed_amount | Double(16,2) | - | Yes | the amount in dispute |
| deposit_owner_id | String(244) | - | Yes | the id of the deposit owner or beneficiary (landlord or branch) |
| agent_id | String(244) | - | No | unique id of the agent involved to the dispute |
| branch_id | String(244) | - | No | id of the agent's branch involved in the dispute |
| initiated_by | Enum(255) | Agent, Landlord, Tenant | Yes | the party that raised the dispute |
| dispute_steps | String(32768) | - | No | steps taken to resolve dispute pior to raising it with TDS |
| dispute_reasons | String(32768) | - | No | summary of reasons for the dispute |
| lead_landlord_id | String(244) | - | Yes | id for landlord involved in the dispute |
| lead_tenant_id | String(244) | - | No | id for the main tenant involved in dispute |
| total_claim_amount | Double(16,2) | - | Yes | the total amount claimed from the deposit, including both agreed and disputed deductions |
| created_date | Date/time(YYYY-MM-DDTHH:mm:ssZ) | - | Yes | resource creation date and time |
dispute_line
| Parameter | Field Type | Value Set | Mandatory | Description |
|---|---|---|---|---|
| id | String(244) | - | Yes | unique identifier |
| dispute_id | String(244) | - | Yes | unique id of parent dispute |
| type | Enum(255) | Cleaning, Damage, Redecoration, Gardening, Rent, Arrears, Other | Yes | type of claim |
| tenant_amount_agreed | Double(16,2) | - | No | amount the tenant agrees to be paid to the landlord |
| claimed_landlord | Double(16,2) | - | Yes | amount claimed by Landlord |
| landlord_statement | String(32768) | - | No | landlord's justification for the claim |
| tenant_statement | String(32768) | - | No | tenant's justification for disputing the landlord's claim |
| created_date | Date/time(YYYY-MM-DDTHH:mm:ssZ) | - | Yes | resource creation date and time |
evidence
| Parameter | Field Type | Value Set | Mandatory | Description |
|---|---|---|---|---|
| id | String(244) | - | Yes | unique identifier |
| dispute_id | String(244) | - | Yes | unique id of parent dispute |
| dispute_item_id | String(244) | - | No | unique id of related dispute line |
| filename | String(244) | - | Yes | name of the file that has been uploaded |
| file_size | Integer(10) | - | No | size of the file in bytes |
| file_type | Enum(10) | See below | Yes | format of the file |
| file_url | String(255) | - | Yes | link including resource path in storage server |
| source | Enum(255) | Dispute Application, Dispute Response, Admin | No | mechanism through which the evidence was uploaded |
| uploader_type | Enum(255) | Agent, Landlord, Tenant | Yes | type of user who uploaded the evidence during the dispute process |
| created_date | Date/time(YYYY-MM-DDTHH:mm:ssZ) | - | Yes | resource creation date and time |
Example
curl -X POST 'https://uat-tds.cs87.force.com/services/apexrest/v1/disputes'
-H 'Accept: application/json'
-H 'Content-Type: application/json'
-H 'AccessToken: ZeroDeposit-1579175515000-7c474385a710551b5d2aaeca2268d6ea7e7721fc'
-d '{
"landlord": {
"id": "landlordId20",
"email"<EMAIL_ADDRESS>"lastname": "Landlord",
"firstname": "Jack",
"phone": "07401655677",
"mobile": "06788987678",
"birth_date": "1990-01-13",
"salutation": "Mr.",
"job_title": "CEO",
"postcode": "EC3M5DJ",
"street": "fenchurch",
"city": "london",
"country": "UK",
"created_date": "2019-12-23T16:00:00Z"
},
"tenancy": {
"end_date": "2019-12-23",
"start_date": "2019-12-23",
"deposit_amount": 2500.00,
"country": "UK",
"city": "London",
"street": "Faringford Road",
"postcode": "E15 4DG",
"customer_id": "landlordId20",
"reference": "1111333",
"id": "tenancy68",
"rent_amount": 10000.15,
"nr_of_tenants": 3,
"created_date": "2019-12-23T16:00:00Z"
},
"evidence": [
{
"file_url": "https://test/evidence1.txt",
"uploader_type": "Landlord",
"filename": "evidence1",
"dispute_id": "dispute68",
"dispute_item_id": "l26",
"file_size": "500",
"source": "Admin",
"file_type": "txt",
"id": "ev28",
"created_date": "2019-12-23T16:00:00Z"
},
{
"file_url": "https://test/evidence2.txt",
"uploader_type": "Landlord",
"filename": "evidence2",
"dispute_id": "dispute68",
"dispute_item_id": "l26",
"file_size": "500",
"source": "Admin",
"file_type": "txt",
"id": "ev29",
"created_date": "2019-12-23T16:00:00Z"
},
{
"file_url": "https://test/evidence3.txt",
"uploader_type": "Landlord",
"filename": "evidence3",
"dispute_id": "dispute68",
"dispute_item_id": "l26",
"file_size": "500",
"source": "Admin",
"file_type": "txt",
"id": "ev30",
"created_date": "2019-12-23T16:00:00Z"
}
],
"tenant": [
{
"email"<EMAIL_ADDRESS>"lastname": "Tenant",
"firstname": "Lee",
"id": "t8",
"phone": "07899855677",
"mobile": "07988766544",
"birth_date": "1999-08-23",
"salutation": "Mr.",
"job_title": "Consultant",
"created_date": "2019-12-23T16:00:00Z"
},
{
"email"<EMAIL_ADDRESS>"lastname": "Tenant",
"firstname": "James",
"id": "t9",
"phone": "07899855677",
"mobile": "07988766544",
"birth_date": "1999-08-23",
"salutation": "Mr.",
"job_title": "Admin",
"created_date": "2019-12-23T16:00:00Z"
},
{
"email"<EMAIL_ADDRESS>"lastname": "Tenant",
"firstname": "Darren",
"id": "t10",
"phone": "07899855677",
"mobile": "07988766544",
"birth_date": "1999-08-23",
"salutation": "Mr.",
"job_title": "Consultant",
"created_date": "2019-12-23T16:00:00Z"
}
],
"dispute_line": [
{
"claimed_landlord": 400.00,
"type": "Rent",
"dispute_id": "dispute68",
"tenant_amount_agreed": 500.55,
"landlord_statement": "late rent",
"tenant_statement": "no money left",
"id": "l26",
"created_date": "2019-12-23T16:00:00Z"
},
{
"claimed_landlord": 600.00,
"type": "Damage",
"dispute_id": "dispute68",
"tenant_amount_agreed": 100.55,
"landlord_statement": "damaged counter",
"tenant_statement": "little damage",
"id": "l27",
"created_date": "2019-12-23T16:00:00Z"
},
{
"claimed_landlord": 1000.00,
"type": "Gardening",
"dispute_id": "dispute68",
"tenant_amount_agreed": 50.55,
"landlord_statement": "damaged garden",
"tenant_statement": "didnt do it",
"id": "l28",
"created_date": "2019-12-23T16:00:00Z"
}
],
"dispute": {
"initiated_by": "Landlord",
"tenancy_id": "tenancy68",
"disputed_amount": 2000.00,
"lead_landlord_id": "landlordId20",
"lead_tenant_id": "t9",
"total_claim_amount": 2000.00,
"deposit_owner_id": "branch1",
"agent_id": "agent20",
"branch_id": "branch1",
"dispute_reasons": "tenant left house in a mess",
"dispute_steps": "tried to agree amount with tenant but didnt work",
"id": "dispute68",
"created_date": "2019-12-23T16:00:00Z"
},
"agent": {
"id": "agent20",
"branch_id": "branch1",
"firstname": "Joe",
"lastname": "Bloggs",
"email"<EMAIL_ADDRESS>"phone": "06789765444",
"mobile": "07501655678",
"birth_date": "1999-09-24",
"salutation": "Mr.",
"job_title": "CFO",
"created_date": "2019-12-23T16:00:00Z"
},
"branch": {
"id": "branch1",
"name": "Foxtons Central",
"postcode": "EC3M5DJ",
"street": "fenchurch",
"city": "london",
"country": "UK",
"website": "www.website.com",
"phone": "090888788677",
"created_date": "2019-12-23T16:00:00Z"
}
}'
The above command returns JSON structured like this:
HTTP/1.1 201 Created
{
"tds_dispute_id": "5008E00000Gu5NsQAJ",
"success": true
}
An example of a dispute submission is shown through the shell script on the right side panel. Some definitions are explained below.
HTTP Method
POST
Endpoint
https://uat-tds.cs87.force.com/services/apexrest/v1/disputes
HTTP Headers
| Header | Description |
|---|---|
| Accept | application/json |
| Content-Type | application/json |
| AccessToken | TestAccount-1578320284000-77667d19e566d4744ed0db55b734f63c5c7a5338 |
Request Body
See shell script example
Notes:
Date
fields should be sent in YYYY-MM-DD
format.
Date/time
fields should be sent in UTC format like YYYY-MM-DDTHH:mm:ssZ
.
Enum
type fields should have values inside the provided set or the payload will be rejected.
Response
The response body will contain a JSON object with the parameters below.
| Parameter | Description |
|---|---|
| success | Boolean indicating whether submission was successful or not |
| errors | Displayed on failure will include specific message flagging the error(s) |
| tds_dispute_id | Displayed on success with internal ID for the created dispute |
Error messages
In case the submitted payload is not successful, the returned parameter errors
can contain the any of the messages
described below.
| Message | Description |
|---|---|
| Content Type not supported | The Content-Type header value provided is not supported |
| Accept not supported | The Accept header value provided is not supported |
| No access token provided | AccessToken header not provided or blank value |
| Invalid access token format | AccessToken header value has wrong format |
| Invalid timestamp | Timestamp not provided or invalid |
| Timestamp is too old | Timestamp provided is older than 5 minutes |
| Invalid access token | Provided hmac can not be authenticated |
| Invalid payload | Payload provided is malformed |
| Missing required Objects | Required payload objects have not been provided |
| Invalid objects | Payload contains objects that are not part of the schema |
| Invalid type for objects | Payload contains objects that have the wrong type |
| Missing required parameters | Flags mandatory fields that are missing in dot notation 'object.field' |
| List can not be empty | Payload contains an empty list for a mandatory object, there should always be at least 1 element |
| Invalid parameters for object | Payload contains invalid/non existent parameter(s) for the object specified |
| Invalid value for field | A value that is not within the allowed value set for that field has been provided |
| Invalid field type for key | A blank or null value has been provided for a mandatory key. Mandatory keys can not be blank |
| Duplicate {object} id found | A dispute, tenancy, dispute_line, or evidence has already been created with that id |
| Invalid foreign key for object | The object contains a foreign key reference to an object that is not on the payload |
Webhooks
Introduction
TDS will communicate status updates and adjudication results via REST based webhooks, where suppliers will be able to subscribe and provide the callback endpoints. Subscriptions are done via request to TDS only, at this point.
Once TDS is provided with an endpoint for the callback for a specific webhook action, a subscription will be created and shared key will be provided to the supplier. There will always be a unique shared key per endpoint per subscription.
Headers
TDS webhook requests will always have three specific HTTP headers that will help suppliers verify the source, content type and delivery unique identifier.
| Header | Type | Description |
|---|---|---|
| Content-Type | String | Content type of the request, always application/json |
| TDS-Delivery | String | Unique identifier for the webhook event |
| TDS-Signature | String | TDS signature using shared key |
Verifying the source
Suppliers will be able to verify the source of the webhook using TDS-Signature
header.
This will contain the HMAC generated by a SHA1 hash of the payload, signed with the shared key provided by TDS for the endpoint. Your generated hash should always match this signature for a valid authentication.
Dispute Status update
The Dispute Status Update webhook allows suppliers to be notified whenever the status of a case changes.
The subscription is not mandatory. List of statuses are shown in the table below.
| Status |
|---|
| On Hold |
| Evidence Gathering TT |
| Awaiting Review |
| Review Complete |
| Adjudication |
| Closed |
Payload schema
curl -X POST 'https://disputesupplier.com/dispute_status_update'
-H 'Content-Type: application/json'
-H 'TDS-Delivery: 5008E00000GwTBjQAN1579786198991'
-H 'TDS-signature: 5b96954597082eade74430f075c819d27aa66c1e'
-d '{
"status" : "Review Complete",
"id" : "dispute71",
"updated_datetime" : "2020-01-23T13:29:56Z"
}'
Webhook should expected the following response
HTTP/1.1 200 OK
Payload will be sent in JSON format and will contain the following schema.
| Parameter | Type | Description |
|---|---|---|
| id | String(244) | The primary key for the dispute on the source system |
| status | String(244) | The new status of the dispute |
| updated_datetime | Date/time | Datetime of the update |
Datetime will be provided in UTC time with format YYYY-MM-DDTHH:mm:ssZ
.
Example request shown on the right side panel.
Adjudication Results
The Adjudication results webhook will be triggered off of the report being published by the adjudication team and will contain information about the decision on the dispute and amounts to be paid out.
This subscription is mandatory.
Payload schema
curl -X POST 'https://disputesupplier.com/adjudication_results'
-H 'Content-Type: application/json'
-H 'TDS-Delivery: a0C8E000006o4w5UAA1579785940763'
-H 'TDS-signature: 4d9c90e059ba262baf07a02f2258680390cee645'
-d '{
"awarded_to_tenant" : 449.44,
"report_url" : "https://shareuatna11.springcm.com/Public/DownloadPdf/12341/1a4351cc-0032-ea11-b80a-48df378a7098/299e1a2e-0132-ea11-b80a-48df378a7098",
"created_date" : "2020-01-20T17:05:29Z",
"dispute_id" : "dispute68",
"publish_date" : "2020-01-23T00:00:00Z",
"awarded_to_agent" : 100.00,
"awarded_to_landlord" : 450.56
}'
Webhook should expected the following response
HTTP/1.1 200 OK
Payload will be sent in JSON format and will contain the following schema.
| Parameter | Type | Description |
|---|---|---|
| id | String(244) | TDS report unique identifier |
| dispute_id | String(244) | Dispute identifier of the source system |
| publish_date | Date/time | Date/time of when decision was published |
| awarded_to_tenant | Double(16,2) | Amount awarded to tenants |
| awarded_to_landlord | Double(16,2) | Amount awarded to landlord |
| awarded_to_agent | Double(16,2) | Amount awarded to agent |
| report_url | String(255) | Public url to TDS adjudication report in PDF format. Valid for 1 day |
| created_date | Date/time | Date/time of report creation |
Date/time will be provided in UTC time with format YYYY-MM-DDTHH:mm:ssZ
.
Example request shown on the right side panel.
On-demand webhook triggering (Staging only)
TDS allows the supplier to trigger the webhooks themselves via API to help with testing your integration - this feature is only available in the staging environment.
Calling these endpoints will result in the corresponding webhook being triggered and will send the event to your specified handler endpoints.
Authentication
Authentication method is the same as the Disputes API, so you should be able to just reuse what you already have set up.
Triggering a Dispute Status Update
Manually triggering a status update can be done using the specifications below.
curl -X POST 'https://uat-tds.cs87.force.com/services/apexrest/webhooktrigger/v1/dispute_status_update'
-H 'Accept: application/json'
-H 'Content-Type: application/json'
-H 'AccessToken: ZeroDeposit-1579175515000-7c474385a710551b5d2aaeca2268d6ea7e7721fc'
-d '{
"status" : "Review Complete",
"tds_dispute_id" : "5008E00000HKEVe"
}'
Response should be presented as below
HTTP/1.1 200 OK
{
"success": true,
"errors": null
}
| Environment | Endpoint |
|---|---|
| Staging | https://uat-tds.cs87.force.com/services/apexrest/webhooktrigger/v1/dispute_status_update |
### Request Headers
| Header | Description |
|---|---|
| Accept | application/json |
| Content-Type | application/json |
| AccessToken |
HTTP Method
- POST
### Request Parameters
| Parameter | Type | Description |
|---|---|---|
| tds_dispute_id | String | TDS's id of the dispute returned by API after creation |
| status | Enum | New status of the case to update to. Values are: On Hold Evidence Gathering TT, Awaiting Review, Review Complete, Adjudication, Closed |
### Response Body
| Parameter | Description |
|---|---|
| success | Boolean indicating if update was successful or not |
| errors | Displayed on failure will include specific message flagging the error(s) |
See example request in the panel on the right.
Triggering an Adjudication Report publishing
Manually triggering an Adjudication Report publishing can be done using the specifications below.
This will create a dummy adjudication report with the results and change the status to 'Published', that will trigger the webhook.
curl -X POST 'https://uat-tds.cs87.force.com/services/apexrest/webhooktrigger/v1/publish_report'
-H 'Accept: application/json'
-H 'Content-Type: application/json'
-H 'AccessToken: ZeroDeposit-1579175515000-7c474385a710551b5d2aaeca2268d6ea7e7721fc'
-d '{
"tds_dispute_id" : "5008E00000HKEVe"
}'
Response should be presented as below
HTTP/1.1 200 OK
{
"success": true,
"errors": null
}
| Environment | Endpoint |
|---|---|
| Staging | https://uat-tds.cs87.force.com/services/apexrest/webhooktrigger/v1/publish_report |
### Request Headers
| Header | Description |
|---|---|
| Accept | application/json |
| Content-Type | application/json |
| AccessToken |
HTTP Method
- POST
### Request Parameters
| Parameter | Type | Description |
|---|---|---|
| tds_dispute_id | String | TDS's id of the dispute returned by API after creation |
### Response Body
| Parameter | Description |
|---|---|
| success | Boolean indicating if update was successful or not |
| errors | Displayed on failure will include specific message flagging the error(s) |
Contacts
For any issue or query related to any of the functionality documented, please email the admin<EMAIL_ADDRESS>Errors
The Disputes API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 400 | Bad Request -- Your request is invalid. |
| 401 | Unauthorized -- Your Access Token is invalid. |
| 405 | Method Not Allowed -- You have tried to submit a dispute using the wrong HTTP method. |
| 406 | Not Acceptable -- You requested a response format that isn't JSON. |
| 409 | Conflict -- You have submitted a duplicate dispute, tenancy, dispute_line or evidence object. |
| 415 | Unsupported Media Type -- You have submited a request in a format that is not JSON. |
| 500 | Internal Server Error -- We had a problem with our server. Contact the admin. |
| 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |


József Vágó ( Oradea , 1877 , December 23. - Sali-de-Béarn , 1947 , June 7 ) was a Hungarian architect , a prominent figure, together with his brother László, of Art Nouveau architecture . His son, Pierre Vago, is also an architect.
He was born in a family with nine children from Oradea . The parents were assimilated Jewish citizens and eventually moved to Budapest. As a child, József wanted to become an architect, a passion he passed on to his brother, László.
In 1902, after his boss started a fierce professional dispute with Ödön Lechner, who was especially respected by József Vágó, the latter left the company where he worked and opened a joint office with his brother, László. That was until 1911, and since all the plans made up to that point had been jointly signed, it is not clear what the role of each was. Most of their joint works are residential buildings in Budapest: the first in Síp Street no. 16, from Erzsébetváros (rom: Elisabeta neighborhood), 1902. While their major projects (e.g., the Vértanú Memorial Museum in Arad, 1901-1902, Szabadka City Hall, 1905, Rudas and Sáros Public Baths in Budapest, 1905) explicitly show Lechner's influence, the houses they built are moving away. more and more of the Hungarian Secession style, in the geometrizing direction represented by Otto Wagner. This is illustrated by the streets of Visegrad (Hungary, 1903) and the houses in Boráros Square on Mester Street, built in 1905-1906, and the Gutenberg House, which was also completed at that time. The two architects quickly became famous throughout Europe
Architect
JózsefKörner


---
title: Themes
layout: documentation
doc-tab: customize
doc-subtab: themes
breadcrumb:
- home
- documentation
- customize
- customize-themes
---
{% capture theme %}
// General colors
+register("scheme-main", v("black"))
+register("scheme-main-bis", v("black-bis"))
+register("scheme-main-ter", v("black-ter"))
+register("scheme-invert", v("white"))
+register("scheme-invert-bis", v("white-bis"))
+register("scheme-invert-ter", v("white-ter"))
+register("background", v("black-ter"))
// Border colors
+register("border", v("grey-darker"))
+register("border-hover", v("grey-dark"))
+register("border-light", v("grey-darker"))
+register("border-light-hover", v("grey-dark"))
// Text colors
+register("text", v("grey-light"))
+register("text-invert", v("grey-darker"))
+register("text-light", v("grey"))
+register("text-strong", v("white"))
// Link colors
+register("link-hover", v("white"))
+register("link-hover-border", v("grey-dark"))
+register("link-focus", v("white"))
+register("link-focus-border", v("blue"))
+register("link-active", v("white"))
+register("link-active-border", v("grey-light"))
// Overrides
img[src$="png"] {
// This will invert all png images, modify accordingly
filter: invert(1);
}
{% endcapture %}
{% capture importing %}
$themeable: true !default
// Do not forget the !default or build flags will have no effect
@import "bulma/bulma.sass"
+theme("default")
+theme("my-theme")
@import "my-theme.sass"
{% endcapture %}
{% capture as_default %}
$themeable: true !default
@import "bulma/customizer.sass"
@import "my-theme.sass"
@import "bulma/bulma.sass"
+theme("default")
// The default theme will contain the variables of my-theme.sass
+theme("my-other-theme")
@import "my-other-theme.sass"
{% endcapture %}
{% capture step_1 %}
Create a file called my-theme.sass
and paste the following content:
{% highlight sass %}{{ theme }}{% endhighlight %}
This is a simple dark theme, but you can search online for themes created by other contributors
{% endcapture %}
{% capture step_2 %}
Create a file called my-bulma.sass
and paste the following content, this will be your entrypoint
{% highlight sass %}{{ importing }}{% endhighlight %}
{% endcapture %}
{% capture step_3 %}
To compile your theme you can use any of the following methods:
{% endcapture %}
{% capture step_4 %}
To switch between your themes, you simply need to add a data attribute to your html
element
The attribute is of the following form: data-theme="my-theme"
You can also have different parts of your application use different themes.
For this
you need to wrap the part you want to style differently in a
<div data-theme="my-theme ">
{% endcapture %}
{% capture step_5 %}
If you followed the previous steps you may have noticed that by default you still have the bulma theme
So what if you want to change it?
Nothing simpler! Change your entrypoint like so:
{% highlight sass %}{{ as_default }}{% endhighlight %}
By importing the theme before importing bulma, it will be considered as the default theme
You can then add other themes like shown in the step 2
{% endcapture %}
{% include components/step.html
title='1. Create your theme or find one online'
content=step_1
%}
{% include components/step.html
title='2. Create an entrypoint'
content=step_2
%}
{% include components/step.html
title='3. Compile your theme'
content=step_3
%}
{% include components/step.html
title='4. Use your theme'
content=step_4
%}
{% include components/step.html
title='5. Make it the default'
content=step_5
%}
{% capture old_theme %}
$scheme-main: #abc
$background: $scheme-main
.override
background-color: darken($background, 5%)
{% endcapture %}
{% capture new_theme %}
+register("scheme-main", #abc)
+register("background", v("scheme-main"))
.override
background-color: vDarken("background", 5%)
{% endcapture %}
{% capture old_theme_scss %}
$scheme-main: #abc;
$background: $scheme-main;
.override {
background-color: darken($background, 5%);
}
{% endcapture %}
{% capture new_theme_scss %}
$_: register("scheme-main", #abc);
$_: register("background", v("scheme-main"));
.override {
background-color: vDarken("background", 5%);
}
{% endcapture %}
{% include elements/anchor.html name="Migrating an old theme" %}
Themes released before bulma 1.0 used variables to override bulma, while it may still work for replacing the
default theme, it does not for multiple bundled themes
To make an old theme compatible with bundled themeing, you will need to convert your variables declaration
For example, the following:
SASS: {% highlight sass %}{{ old_theme }}{% endhighlight %}
SCSS: {% highlight scss %}{{ old_theme_scss }}{% endhighlight %}
would become
SASS: {% highlight sass %}{{ new_theme }}{% endhighlight %}
SCSS: {% highlight sass %}{{ new_theme_scss }}{% endhighlight %}
Here are some regex you can use, to help you get started
- Search:
\$(.*):\s+(.*)(;)?
- Replace:
$_: register("$1", $2)$3
This regex does not handle lists declared with commas, so make sure to wrap your declared lists in
parenthesis
- Search:
$([a-zA-Z0-9-]+)
- Replace:
v("$1")
This regex will replace all the variables, this may not be desired for all of them, for example in a
@each
loop or for flag variables, so make sure to not use replace all with this
regex


Drop an OpenDocument file in and it will be unpacked into a folder next to the original file. Drop in a folder and it will be packed into an OpenDocument file.
WARNING! The generated file or folder will overwrite any existing file or folder with the same name.


private suspend fun fetchRemotePacks(): List<RemotePackInfo>
Fetches the remote packs that the user has purchased. This is stored in the database.
Return A list of Remote pack info
See Also
RemotePackInfo


Colin Kaepernick to hold private workout at Falcons' facility
by WSBTV.com , The Atlanta Journal-ConstitutionThe NFL has arranged for quarterback Colin Kaepernick, a free agent, to work out for NFL teams at the Falcons' facility in Flowery Branch on Saturday.
A memo about the workout went out to all 32 teams Tuesday.
Kaepernick, who guided the San Francisco 49ers to the Super Bowl after the 2012 season, has not played in the NFL since opting out of his contract March 3, 2017.
Kaepernick started a leaguewide movement to kneel during the playing of the national anthem to protest social and racial injustices and police brutality.
All 32 teams have been invited to the private workout, which will include an interview, measurements and quarterback drills. The workout will be recorded and provided to all league teams.
It's not known how many teams will attend the workout, which will be closed to the public and the media.
The Falcons, who play in North Carolina on Sunday, did not immediately respond for comment on the workout.
Kaepernick filed a grievance through the NFL Players Association against the NFL on Oct. 16, 2017.
The grievance filed by Kaepernick and Panthers' safety Eric Reid against the NFL was settled in February. Terms of the settlement were not released.
This article was written by D. Orlando Ledbetter, of The Atlanta Journal-Constitution.


Greetings,
Looks like you need some help.
Someone, hopefully you, requested a password reset. Follow this link if you want to reset your password:
|
If you did not request this change, someone else may be attempting to get access to your account. Reach out to us on www.choraleapp.com for support, in case you feel something is not right.
Have a nice day!


Artist or Album Title
This is the track title This is the track title This is the track title This is the track title


Situations are always interesting when a random sample of people are brought together and forced to interact. My rehabilitation program is a great example: eight people, half male, half female, discrete age groups, social status, referred from different places and working in a variety of fields.
Something that bothers me is people who complain about problems they can fix but choose not to solve for whatever reason. This kind of person is represented heavily in my group.
I’m not the typical patient in my program. My back problems have existed for 5 weeks, since breaking my bones, most others have chronic problems that have been around for years or even decades. Invariably back problems can be solved simply — with the right exercise, body mechanics, stretching and posture.
Some group members have been attending back and neck rehabilitation programs for years, temporarily solving their problems but relapsing when they get “too busy” to keep up their exercise and stretching. It’s expected that we’ll continue our floor and cardio exercises for at least an hour a day five times per week when the program is complete. There’s no one that hasn’t complained about the burden of having to exercise when they have so little time as it is while simultaneously complaining about back pain, the stress it causes and the things it prevents them doing.
The patient who seems to have the most day to day issues flat out refuses to give up wearing high heeled shoes despite the physio and occupational therapist’s dire warnings against them. Another just doesn’t like wearing shoes with good arch support. It blows my mind that these people are willing to enrol in a two week, full-time rehabilitation program but are totally unwilling to wear a different kind of shoe. I can’t imagine how frustrating it must be for doctors.
It’s not limited to taking care and responsibility for their own well-being either. A consistent topic of conversation is how terrible the traffic is. I talk about how great it is living in the city, so close to the hospital and all other amenities. They turn their nose up, “I could never live in the city”. Meanwhile, they’re spending two hours a day stuck in stop start traffic, complaining bitterly about it and can’t find a single hour per day to look after their health.
The exercise physiologist asked me whether I’ll have the time to continue the floor exercise program after the two weeks. Of course I’ll have time because I rent an apartment very close to my workplace, I work sane hours and getting back to 100% health is the most important thing in my life. Without that, little else, including the type of shoe I wear, matters.


History
According to legend, Princess Libuše, the sovereign of the Czech tribe, married a humble ploughman by the name of Přemysl and founded the dynasty carrying the same name. The legendary princess saw many prophecies from her castle Libusin, which was located in central Bohemia.
In one prophecy, it is told, she foresaw the glory of Prague. One day she had a vision: "I see a vast city, whose glory will touch the stars! I see a place in the middle of a forest where a steep cliff rises above the Vltava River. There is a man, who is chiselling the threshold (prah) for the house. A castle named Prague (Praha) will be built there.
Just as the princes and the dukes stoop in front of a threshold, they will bow to the castle and to the city around it. It will be honoured, favoured with great repute, and praise will be bestowed upon it by the entire world."
Read more...


UniHang
Home
Events
Organizations
Log Out
Uncle Dondre
Major/Minor
Information technology
Interests
Sports


Also known as Also known as CNC (Computer Numerical Control), CAD provides the necessary data from design files which Controls cutting as well as marking of material. It is very precise and repeatable. Below are some CNC examples, however we will be focuing on Laser Cutting!
Examples of CNC:
Laser Cutting
Design a Musical Box piece that :
Sketch on paper how your box looks like and the approximate dimensions.
Go to Modify > Change parameters and a table will come up, you can set the length, width, height and thickness of box, as well as no. of tabs along each ___ and the length of each tab.
I did the base 1st, Extruded the thickness. Draw the 1st length tab to extrude, then pattern it!
Repeat the steps, and finish up the Base!
New component > Create sketch and start from the origin. Choose EDGE face of base tab.
Go to Construct > Midplane, select the 2 sides of the component, and a midplane is create between them. This step is to allow to mirror.
Mirror the front using the midplane, and repeat for left and right sides.
Use the combine tool to create the tabs. Select Target Body as the body that is being cut, and the Tool Bodies as the bodies that will cut the Target Body.
This is for the the lid to rest flush to the left, right, front and back pieces.
Created new parametirc for the hole dims. Modify > Change Parameters
Ill try to create a cylinder and extrude from the lid. Turned off visibility of right body to see better, Theres dis weird dangling part.
After much struggling and editing it looks good now.
(.ai file)
Export individually from fusion -> create sketch > select face> off visibility of other bodies, only the body u wanna export 1st and do it one by one. Open as dxf into libre cad. Note: I had problems exporting the lid into dxf as the pegs at the sides are round, and we cant laser cut round stuff, so I had to change them to squares.
After that i brough it to AutoCAD to off set the borders to 2mm, as it was looking abit plain.
Image trace > Expand, ad delete unwanted areas
Finally! (Although idk why are there so many hatch failed notifs)
The process was quite a smooth one and I learned to use a mechanical hand drill which was cool.


---
layout: archive
title: Lean Prover Zulip Chat Archive
permalink: 116395maths/24873cohomologyandsubgroupsofsubgroups.html
---
The archive URL format has changed. Please find this page at:
https://leanprover-community.github.io/archive/stream/116395-maths/topic/cohomology.2C.20and.20subgroups.20of.20subgroups.html


River Brahmaputra
Recently, the state government of Assam has inaugurated a 1.8 km ropeway across the river
Brahmaputra and described it as the country's longest river ropeway.
The Brahmaputra, called Yarlung Tsangpo in Tibet, Siang/Dihang River in Arunachal Pradesh and Luit, Dilao in Assam, is a trans-boundary river which
flows through China, India and Bangladesh. It is the 4th largest river in the world by discharge, and the 15th longest.


Dear {{name}},
{{invitedBy}} of {{estblishmentName}}, {{establishmentLocation}} added You as a server in {{appName}}
To register and download the app, click here.
The {{appName}} Support Team


First thing's first, {{noun1}}'s the realest
Drop this and let the whole {{noun2}} feel it
And I'm still in the Murda Bizness
I could hold you down, like I'm givin' lessons in physics
You should want a {{adjective1}} {{noun3}} like this
Drop it low and pick it up just like this
Cup of {{noun4}}, cup of {{noun5}}, cup of {{noun6}}
High heels, somethin' worth a half a ticket on my {{noun7}}
Takin' all the liquor straight, never {{verb}} that
Rooftop like we bringin' '88 back
Bring the hooks in, where the bass at?

Remember my name
'Bout to blow


 There is no live production data on the test platform. The data in the test platform can change at any time.
To obtain a key that enables you to let Medicare Beneficiaries connect their Medicare information to your production application requires you to go through two more steps:


In this post we’ll be discussing Rack and Sinatra, two Ruby libraries for processing HTTP requests. Though Rack is somewhat the bumbling robot to Sinatra’s martini drinking cad, they’re both very simple-yet-powerful gems for allowing your Ruby app to interact with web requests.
HTTP REQUESTS
Though most of us have been browsing the internet since we were young, the actual mechanics of how your browser grabs Justin Beiber’s latest tweet and outputs it to your screen are a complete mystery (why you would want to do this is another mystery…). In very basic terms, the browser submits a request for information, which travels through a web server and up to an application, where that request is processed and a response is sent back down the chain to the browser.
This seems simple enough, but for your application, communicating with web servers can be a complicated process. For Ruby web apps, there are numerous different web servers (Mongrel, Thin, WEBrick, etc.), all of which process the requests coming from web browsers differently, and none of which your app will inherently know what to do with.
RACK
Rack, (called middleware because it goes in the ‘middle’ of your app and a web server), aims to simplify this process. It filters and wraps the HTTP requests coming from the web server and formats them in a way that your app can understand.
A Rack application will respond to a ‘call’ method, which takes as it’s single argument a hash that contains information about the HTTP ‘request’. The call method returns an array containing the response status code (ex. 401, ouch), response headers, and response body as an array of strings:
1 2 3 4 5 6 7 8 9 10 |
|
Rack acts as a butler of sorts for your application, answering the door and translating requests into a language your app can understand. It also communicates your responses to the outside world, in this case a range of web servers with varying functionality, in a format they can ALL understand, which is pretty sweet.
SINATRA
Though it delivers some great functionality, you may have noticed Rack isn’t the suavest of communicators. Here, ol’ Blue Eyes can really smooth out the edges.
Sinatra, a DSL (domain specific language) for creating web apps in Ruby, strolls in, cigarette in hand, to abstract away messy HTTP request processing with a stupid simple syntax for interacting with Rack and Web Servers…
1 2 3 4 5 |
|
The above code block will give us the same functionality as our Rack app, but as you can see, the syntax is much easier to understand. With Sinatra, setting up your app to handle various web requests (so far we’ve only covered ‘get’, but there are also ‘post’, ‘put’, ‘delete’ and others) is a breeze. Furthermore, for those apps that perhaps don’t need the robust functionality of Rails, it can be a great framework to get a simple web app up and running quickly and efficiently.
CONCLUSION
Sinatra and Rack Middleware allow your app to interact with the web in a clean and efficient way, letting you concentrate on building out the real functionality of your product while they take care of the dirty work.
NOTE: This post is highly indebted to an amazingly simple, funny, and informative Rack/Sinatra talk given by Tom Black. Go check it out, now.


ticket
- ARINcli ticket Command
ticket options --check [TICKET_NUMBER]
ticket options --update [TICKET_NUMBER]
ticket options --show [TICKET_NUMBER] [DETACH_FILE]
ticket options --remove [TICKET_NUMBER]
ticket options --message[=MESSAGE_FILE] TICKET_NUMBER
This program uses ARIN's Reg-RWS(7) RESTful API to download tickets, display tickets, and add messages to tickets.
The --check
command option checks the internal ticket database against data in Reg-RWS(7) and
displays ticket numbers for any tickets that have been updated. If a ticket number is given, then
only that ticket will be checked. If no ticket number is given, then all tickets will be checked.
The --update
command option downloads tickets to the internal ticket database from Reg-RWS(7).
If a ticket number is given, then only that ticket will be downloaded. If no ticket number is given,
then all tickets will be downloaded. By default, tickets or messages or attachments will not be
downloaded if they have already been downloaded or do not need to be updated. However, the
--force-update
option may be used to force downloading when an update would not do so otherwise.
The --show
command option displays tickets from the internal ticket database. If no ticket number
is given, a tree summary of all the tickets in the database will be displayed. If a ticket number
is given, a tree summary for that specific ticket will be display along with all messages on that
ticket.
The --remove
command option removes tickets from the internal ticket database. If no ticket
number is given, all tickets will be removed. If a ticket number is given, just that ticket will be
removed.
The --message
command option sends a message to Reg-RWS(7) to attach to a ticket. The -f
or
--file
parameters can be used to specify a file to be attached as the message. If
no message file is specified, an editor will be invoked so that the user can create the message.
All the commands will produce a tree of results in the same way as arininfo(1). Numbered items in the tree with a trailing equal sign ("=") are addressable. Consider the following tree:
1= 20121018-X1
|--- 1= How does Whois Work
|--- 2= Ticket Status Update
|--- 3= Ticket Status Update
|--- 4= IP Addresses/AS Numbers - test - ANSWERED
|--- 5= Ticket Status Update
|--- 6= Ticket Status Update
|--- 7= (no subject)
| |--- 1= sac-055-en.pdf
|--- 8= IP Addresses/AS Numbers - test - ANSWERED
| |--- 1= my_cat.jpg
| |--- 2= kitty_litter_disposal.pdf
|--- 9= Ticket Status Update
|-- 10= Ticket Status Update
`-- 11= (no subject)
In the above example, 1= is a tree address for ticket 20121018-X1. Nodes in the tree can be separated by an ("=") sign or a dot ("."). Therefore 1.1= addresses the first message of ticket 20121018-X1, 1.2= address the second message of that ticket, and so on.
When using -s
or --show
to view a ticket, narrowing down a single message on the ticket
will display only that message. In the example above ticket -s 1.1=
would display only the
message with the subject "How does Whois Work".
Attachments can be copied out of the ticket by narrowing the tree address to an attachment.
For example, ticket -s 1.7.1=
would create a copy of sac-055-en.pdf in the current directory.
The destination name and location can be changed by adding a trailing file name. For example,
ticket -s 1.7.1= /tmp/some.pdf
sound copy the attachment sac-055-en.pdf to a file named
some.pdf in the /tmp directory.
-c
, --check
[TICKET_NUMBER]
Checks for updated tickets. If no ticket number is given, all tickets are
checked.
-u
, --update
[TICKET_NUMBER]
Updates tickets. If no ticket number is given, all tickets are updated.
--force-update
Forces an update not to skip the downloading of any attachments or messages
or tickets.
-s
, --show
[TICKET_NUMBER]
Shows ticket information. If no ticket number is given, a summary tree of all
tickets will be shown.
-m
, --message
TICKET_NUMBER
Sends a message to be attached to a ticket.
-f
, --file
Uses a file instead of invoking an editor for the message to attach to a
ticket.
-A
, --apikey
API_KEY
The API_KEY to use. API Keys are associated with ARIN Online accounts and
are the methods used for authentication in Reg-RWS(7).
-U
, --url
URL
The base URL of the Reg-RWS(7) system.
--messages
MESSAGE_LEVEL
Specify one of the message levels: none
for no messages are to be output,
some
for some messages to be output, or all
for all messages to be output.
--messages-out
FILE
Specifies that messages are to be written to the given file.
--data
DATA_AMOUNT
Specifies the amount of data to be output. Use of of: terse
, normal
,
or extra
.
--data-out
FILE
File where data is to be written if specified.
-V
Equivalent to --messages all
and --data extra
-h
Displays help.
ticket 20121018-X1
shows the ticket 20121018-X1.
ticket -s 20121018-X1
does the same as above.
ticket -s 1=
shows the ticket in the tree addressed by 1=.
ticket -u
updates all the tickets in the internal ticket database.
arinreports(1), arincli(7), arinutil(1), arininfo(1), Reg-RWS(7)


Guidance
Technical specification for software suppliers defining the scope of the phonics screening check data collection 2013.
PDF , 227KB , 24 pages
This specification defines the scope of the phonics screening check data collection 2013. It provides technical details and guidance for schools, academies (including free schools) local authorities, and software suppliers to successfully prepare and submit phonics screening check data to us.
It contains:
This guide must be read in conjunction with the current version of the common basic data set (CBDS) .
Published: 13 April 2013


List of all members.
Classes |
| class | DeleteRequest |
| class | GetRequest |
| class | ImportRequest |
| class | InsertRequest |
| class | InstancesRequest |
| class | ListRequest |
| class | MoveRequest |
| class | PatchRequest |
| class | QuickAddRequest |
| class | UpdateRequest |
Public Types |
| enum | OrderBy { StartTime,
Updated
} |
| | The order of the events returned in the result. Optional. The default is an unspecified, stable order. More...
|
Public Member Functions |
|
| EventsResource (CalendarService service, Google.Apis.Authentication.IAuthenticator authenticator) |
| virtual InsertRequest | Insert (Google.Apis.Calendar.v3.Data.Event body, string calendarId) |
| | Creates an event.
|
| virtual GetRequest | Get (string calendarId, string eventId) |
| | Returns an event.
|
| virtual MoveRequest | Move (string calendarId, string eventId, string destination) |
| | Moves an event to another calendar, i.e. changes an event's organizer.
|
| virtual ListRequest | List (string calendarId) |
| | Returns events on the specified calendar.
|
| virtual UpdateRequest | Update (Google.Apis.Calendar.v3.Data.Event body, string calendarId, string eventId) |
| | Updates an event.
|
| virtual PatchRequest | Patch (Google.Apis.Calendar.v3.Data.Event body, string calendarId, string eventId) |
| | Updates an event. This method supports patch semantics.
|
| virtual InstancesRequest | Instances (string calendarId, string eventId) |
| | Returns instances of the specified recurring event.
|
| virtual ImportRequest | Import (Google.Apis.Calendar.v3.Data.Event body, string calendarId) |
| | Imports an event.
|
| virtual QuickAddRequest | QuickAdd (string calendarId, string text) |
| | Creates an event based on a simple text string.
|
| virtual DeleteRequest | Delete (string calendarId, string eventId) |
| | Deletes an event.
|
Member Enumeration Documentation
The order of the events returned in the result. Optional. The default is an unspecified, stable order.
- Enumerator:
| StartTime |
Order by the start date/time (ascending). This is only available when querying single events (i.e. the parameter "singleEvents" is True)
|
| Updated |
Order by last modification time (ascending).
|
Member Function Documentation
Deletes an event.
- Parameters:
-
| calendarId | Required - Calendar identifier. |
| eventId | Required - Event identifier. |
Returns an event.
- Parameters:
-
| calendarId | Required - Calendar identifier. |
| eventId | Required - Event identifier. |
Imports an event.
- Parameters:
-
| calendarId | Required - Calendar identifier. |
Creates an event.
- Parameters:
-
| calendarId | Required - Calendar identifier. |
Returns instances of the specified recurring event.
- Parameters:
-
| calendarId | Required - Calendar identifier. |
| eventId | Required - Recurring event identifier. |
Returns events on the specified calendar.
- Parameters:
-
| calendarId | Required - Calendar identifier. |
Moves an event to another calendar, i.e. changes an event's organizer.
- Parameters:
-
| calendarId | Required - Calendar identifier of the source calendar where the event currently is on. |
| eventId | Required - Event identifier. |
| destination | Required - Calendar identifier of the target calendar where the event is to be moved to. |
Updates an event. This method supports patch semantics.
- Parameters:
-
| calendarId | Required - Calendar identifier. |
| eventId | Required - Event identifier. |
Creates an event based on a simple text string.
- Parameters:
-
| calendarId | Required - Calendar identifier. |
| text | Required - The text describing the event to be created. |
Updates an event.
- Parameters:
-
| calendarId | Required - Calendar identifier. |
| eventId | Required - Event identifier. |
The documentation for this class was generated from the following file:
- Google.Apis.Calendar.v3.cs


The first program that is generally written in a new language is called Hello World!, named such because it involves the coder simply getting the program to print out "Hello World!"
.
The first component of this program is known as the print
statement. The print
statement takes an argument after it, and outputs it to the console.
>>> print "hi" hi >>> print 9 9 >>> print 'Dave the legend' Dave the legend
The second component is known as a string. This string is the argument after the print
statement, and is the text that is outputted to the console.
A string is simply a piece of text that is surrounded by either single quotes 'dave'
or double quotes "dave"
.
Finally, putting all this together, our program to print out "Hello World!"
is as follows:
>>> print "Hello World!" Hello World!
There are many types involved in python, but the few we shall cover this lesson are int
, float
, and str
.
Objects in python are grouped by their type, integers being grouped as ints, non-integer values (decimals) being grouped as floats, and as noted earlier, pieces of text grouped as strings (str
).
>>> type(9) == int True >>> type(2.3) == float True >>> type("Hello World!") == str True


| 010:105 Khan | : |
"And (it is inspired to me): Direct your face (O Muhammad SAW) entirely towards the religion Hanifa (Islamic Monotheism, i.e. to worship none but Allah Alone), and never be one of the Mushrikun (those who ascribe partners to Allah, polytheists, idolaters, disbelievers in the Oneness of Allah, and those who worship others along with Allah). |
| 010:105 Maulana | : |
And that thou set thy purpose towards the Religion uprightly; and be not of the polytheists. |
| 010:105 Pickthal | : |
And, (O Muhammad) set thy purpose resolutely for religion, as a man by nature upright, and be not of those who ascribe partners (to Allah). |
| 010:105 Rashad | : |
I was commanded: "Keep yourself devoted to the religion of monotheism; you shall not practice idol worship. |
| 010:105 Sarwar | : |
to have firm belief in the up-right religion and not to be an idolater |
| 010:105 Shakir | : |
And that you should keep your course towards the religion uprightly; and you should not be of the polytheists. |
| 010:105 Sherali | : |
'And I have also been commanded to convey to you God's command: 'Set thy face toward religion as one ever inclined to ALLAH, and be not of those who ascribe partners to Him. |
| 010:105 Yusufali | : |
"And further (thus): 'set thy face towards religion with true piety, and never in any wise be of the Unbelievers; |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > التوحيد المطلق لله تعالى Pillars of Islam> Islamic> Oneness of Allah> The Absolute Monotheism of His Glory أركان الإسلام > التوحيد > الشرك والمشركون > النهي عن الشِرك والوعيد عليه Pillars of Islam> Islamic> Polytheism and the Polytheists> The Inhibition of Polytheisms and the Threat Against it أركان الإسلام > الدين > الإخلاص في الدين Pillars of Islam> Religion> Sincerity in Religion الإيمان > الإيمان بالله > حقيقة الإيمان Faith> Belief In Allah> The Reality of Faith
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


CELT2.0 Sentiment Analyzer
Upload a text file to analyze:
Clear
Analyze File
Paste text to analyze:
Analyze Text
Results:


Improve this Doc
Inputs are essential for collecting and handling user input in a secure way. They should follow styling and interaction guidelines for each platform, so that they are intuitive for users to interact with. Ionic uses Angular 2’s form library, which can be thought of as two dependent pieces, **Controls**, and **Control Groups**.
Each input field in a form has a **Control**, a function that binds to the value in the field, and performs validation. A **Control Group** is a collection of Controls. Control Groups handle form submission, and provide a high level API that can be used to determine whether the entire form is valid.
A number of attributes that can be used to style forms and their various input fields are listed below.
_For more information, Check out the [API docs](../api/components/input/Input)._
Use `fixed` to place a label to the left of the input element. The label does not hide when text is entered. The input will align on the same position, regardless of the length of the label. Placeholder text can be used in conjunction with a fixed label.
```html
UsernamePassword
```
Floating labels are labels that animate or “float” up when the input is selected. Add the `floating` attribute to an `ion-label` to use.
Enter text in the example to the right to see the floating labels in action.
```html
UsernamePassword
```
An `ion-label` without any attributes is an inline label. The label does not hide when text is entered. Placeholder text can be used in conjunction with an inline label.
```html
UsernamePassword
By default each input item will fill 100% of the width of its parent element. Make the input inset by adding the `inset` attribute to the `ion-list` component.
```html
UsernamePassword
```
Add the `placeholder` attribute to an `` element to simulate the input's label. When text is entered into the input, the placeholder label is hidden.
```html
```
A stacked label will always appear on top of the input. Add the `stacked` attribute to an `ion-label` to use. Placeholder text can be used in conjunction with an stacked label.
```html
UsernamePassword
```


b o b a n d r a
home
projects
about
contact
‹
›
BLOGS
CHECK OUT
BLOG POSTS FROM PHASE 0 OF DEV BOOTCAMP, SAN FRANCISCO.
Week 09
Asking the Right Questions
Week 08
What is Rails??
Dealing with Conflict
Week 07
SQL Injection
Values and Stereotype Threat
Week 06
{ Blocks, Procs & Lambdas }
Everyday Sexism
Week 05
class HowToRubyClasses
Pairing & Feedback
Week 04
Enumerable #map
Rewiring Your Wetware
Week 03
Why Javascript?
My Gregorc Thinking Style
Week 02
Classes vs. Ids
Wireframing Sites
My Wireframe
Week 01
Technical Blog: My favorite websites
Shereef's Fireside Chat
Introductory Page
How to: Wrap Headphones


Name:
Age:
Post:
Party:
Your Registration is successful, Please Proceed to Vote
Your Registration is Not successful, Please Make sure all fields are Filled
NIN Valid, Please proceed to Vote
NIN invlaid, Input a Valid NIN
Your Vote is successful
You can only vote for one candidate
| # | Names | Party | Votes |
|---|


"Every great developer you know got there by solving problems they were unqualified to solve until they actually did it" - Patrick Mckenzie
I am an up and coming web developer from uptown manhattan and im enrolled in the knowledge house program and im currenlty working on building a webiste for my sports consulting buisness :D
i am fairly new to the tech industry but im learning as much as i can day by day and ready to tackle any obsticle that is set infront of me


template<class CAMERA>
class gtsam::CameraSet< CAMERA >
A set of cameras, all with their own calibration.
|
| virtual void | print (const std::string &s="") const |
| | print More...
|
| |
|
bool | equals (const CameraSet &p, double tol=1e-9) const |
| | equals
|
| |
| template<class POINT > |
| ZVector | project2 (const POINT &point, boost::optional< FBlocks & > Fs=boost::none, boost::optional< Matrix & > E=boost::none) const |
| | Project a point (possibly Unit3 at infinity), with derivatives Note that F is a sparse block-diagonal matrix, so instead of a large dense matrix this function returns the diagonal blocks. More...
|
| |
|
template<class POINT > |
| Vector | reprojectionError (const POINT &point, const ZVector &measured, boost::optional< FBlocks & > Fs=boost::none, boost::optional< Matrix & > E=boost::none) const |
| | Calculate vector [project2(point)-z] of re-projection errors.
|
| |
|
|
template<int N> |
| static SymmetricBlockMatrix | SchurComplement (const FBlocks &Fs, const Matrix &E, const Eigen::Matrix< double, N, N > &P, const Vector &b) |
| | Do Schur complement, given Jacobian as Fs,E,P, return SymmetricBlockMatrix G = F' * F - F' * E * P * E' * F g = F' * (b - E * P * E' * b) Fixed size version.
|
| |
|
template<int N> |
| static void | ComputePointCovariance (Eigen::Matrix< double, N, N > &P, const Matrix &E, double lambda, bool diagonalDamping=false) |
| | Computes Point Covariance P, with lambda parameter.
|
| |
|
static Matrix | PointCov (const Matrix &E, const double lambda=0.0, bool diagonalDamping=false) |
| | Computes Point Covariance P, with lambda parameter, dynamic version.
|
| |
|
static SymmetricBlockMatrix | SchurComplement (const FBlocks &Fblocks, const Matrix &E, const Vector &b, const double lambda=0.0, bool diagonalDamping=false) |
| | Do Schur complement, given Jacobian as Fs,E,P, return SymmetricBlockMatrix Dynamic version.
|
| |
|
template<int N> |
| static void | UpdateSchurComplement (const FBlocks &Fs, const Matrix &E, const Eigen::Matrix< double, N, N > &P, const Vector &b, const KeyVector &allKeys, const KeyVector &keys, SymmetricBlockMatrix &augmentedHessian) |
| | Applies Schur complement (exploiting block structure) to get a smart factor on cameras, and adds the contribution of the smart factor to a pre-allocated augmented Hessian.
|
| |


@import scala.collection.mutable @(messages: mutable.TreeMap[Int, String]) @if(messages.isEmpty) {
There are no messages yet. Add some using POST method.
Here is the list of all created messages:


In this section you can post a question to ask the Newton's Apple community. We value relevant questions above all, so any question is subject of the vote system and filtered therein.
We highly encourage browsing thoroughly through our database of questions before posting. Someone else may have posted it before!
If all research has failed and you still need an answer, please follow these guidelines on posting a question:
Don't spam our topics with questions.
Don't ask for votes.
Don't post inappropriate content, links, or images.


I found it difficult, at first, to reflect on challenges where I got stuck. Having previously come from a computer science background, I held myself up to a certain standard only to realise I was holding myself down from growth. I’ve learned that to overcome obstacles and have genuine reflections, I had to put my ego aside. Bringing down your wall of stubbornness will open your mind up to growth and opportunities that will lead to your success.
The slack DevAcademy group chat is where we can share our recent blogs and apps. But there is a couple of pros and cons to having this platform; one con being the inevitable need to compare your work with others. It was inevitable to see my peers as competition at first and it is fair to see it this way as we’re all here to reach the same goal, more or less. But all this was going on in my head so I took a step back and reassess. I decided to look at the positive side, one major positive being how we can give and receive feedback for improvement.
Initially, my ego got in the way of asking help from strangers. I didn’t know anyone in the cohort and have only interacted with a couple of staff members. When googling for answers just wouldn’t seem to work, I had to finally set my ego aside and ask questions. The people in the academy are great and is what made the whole Foundation process easier. I casually chime in on ideas and help out where I can now. It was basically just the start that I needed to get over
Values are what a person strong believes in and will stand for. One common value that is applicable to everything is being true to your word. Commit and deliver to what you have promised because to display trustworthiness does not only show leadership skills but also shows that you are a person of value.
Most employers, not just in the tech industry, prefer to hire a team player willing to be trained in the process over an arrogant lone-wolf who has the perfect technical skills on paper; empathy is an important trait of a leader. Ironically, a leader is the one who stays back with the slowest in the pack and nurtures them forward.
Reflection is key to further and continuous development and you can’t do this without any sense of self awareness. In order for one to reflect on ones self, you must have have the awareness of your actions and be accepting of your flaws. Turn your weakness into strength by focusing on honing your skills one flaw at a time.
I didn’t expect to learn so much about Neuroplasticity. This part of the core was what I was interested in the most. Knowing the idea and its principles will help us unlock unimaginable abilities and overcome impossible obstacles simply by changing our way of thinking and doing. Along with Growth Mindset and my drive to become successful, I truly believe that, Neuroplasticity is the key to success and I’m glad DevAcademy had introduced us to it.
The most challenging aspect of the core learning for me was identifying my values, strengths and weaknesses as part of my identity and how I see it relating to my learning and career development. Although I did previously mentioned that I talking about myself isn’t exactly the hardest thing in the world, I still did feel a bit of exposure writing about the values as a persona and the culture that I grew up around that has made me into the person I am now.
I believe the reason why DevAcademy is so focused on honing everyone’s core skills is what separates them from other institutions. It is the need for employability in all aspects of the applicant. The academy not only research what technology is used by companies for us be trained on but also what type of people these successful companies hire and look for. It’s about learning how to fit in the team as a programmer and as a social creatures. This is the academy’s unique competitive advantage.
I’ve done my due diligence on DevAcademy before deciding to join. I could’ve joined any other tertiary establishments to reach the same goal but it was the academy’s core teachings that really resonated with what I needed to be employed as a full fledged developer. I need to make sure that the technical skills are in tandem with my soft skills therefore I don’t believe I’ve wasted my time learning everything the academy has to offer.
First, I would create my own resume in a website format, it seems to be the best way for a programmer to showcase their abilities. Not only would it show my skills applied but also show the extent of my creativity. In this age of information, creativity is critical to applicants and employees to combat being wiped out by automation. In the future, I’d also like to help out small businesses build their online footprint. Selfishly, this would help me hone my familiarity with building online footprints from the ground-up so I could use it on my own business ideas. A short term goal of mine is to find an organisation with a lot of performance transparency so that I have an idea of my performance and adjust when I need to as a programmer.
In Sprint 2, I discussed my strengths and limitations. Since both were non-technical social attributes, I thought that nothing would’ve changed but I’ve learnt a lot about myself during the foundation course. My strength of being open and approachable stays the same. But my biggest weakness may have changed since then. It is now the constant comparisons I can’t help make with the work of others in the shared channel. Instead of working together and sharing ideas, my ego felt the need to compare and be insecure about my own work. This may re-occur in the bootcamp.
Given that Bootcamp is a short but intensive 9 weeks, only means that there are a lot of materials to cover and deadlines to meet in such a short period of time. Lagging behind will definitely lead to a lot of stress and mental fatigue. With that said, the biggest challenge for me will be staying on top of the material. Therefore, I’ll do my best to get ahead and do extra work when I can in order to keep my sanity in check. I wouldn’t want to always be in panic mode.
I’d like to make the most of my time at EDA learning how to think critically and hone my analytical skills. Previously, I’ve chased after analytical roles in the tech industry because myself and the people I worked with saw that my attention to details, how I perceive information, problem-solve, and decision making were my best traits. I’d like to build on this further while learning how to incorporate it with the technical skills I will be learning at EDA.
Given how intensive and time critical bootcamp will be, I’ve set a process to commit to whenever I feel stuck. If I’m working individually, my process to problem solving goes something like this: troubleshoot, google, peers and facilitators. There’s always a sense of achievement when you can solve a problem by yourself but I’m aware enough not to let myself get stuck so asking for help can also be handy as long as it’s not disrupting.
I plan to read through every sprint/project to assess how much effort and time I think it will take me to complete each one. Then give room for error for good measure. I also believe that frequent self reflection would be critical in assessing how I cope with the workload. Since bootcamp will be more difficult than foundations, I would need to keep re-assessing my approach and adjust accordingly.


Details
What it entails?
Introduction to the company and the department heads. They need to know who they report to (mentors/ leaders). Know their work title and work description. Introduction to the technologies and tools that the company uses. Tasks to complete o Recruit employee information (personal, contact, tax number etc.) .
What is it for?
This onboarding program is a piece of technology that will assist employers in ensuring that new employees have a smooth transition. The onboarding software includes a digital dashboard that enables talent acquisition teams to collaborate with one another and monitor the progress of each recruit as they progress through the employee onboarding stage. Implementing this onboarding system would assist managers and leadership in addressing the needs and concerns of their new employees while minimizing the administrative burden on HR and managers. It also standardizes the procedure, ensuring that the new employee introductions are consistent and suitable for the position. Finally, it aids enforcement by ensuring that sensitive new hire information is not lost or misfiled.
What Are Onboarding Activities?
Onboarding consists of multiple individual processes; however, it has no official definition and opinions still vary as to which processes fall under the umbrella of onboarding.
OPPORTUNITIES
The proximity of like-minded entrepreneurs and other businesses exploring digital innovation, along with Precinct events, business development programmes and bootcamps create opportunities to share ideas, develop knowledge and learn from others who have navigated the entrepreneurial journey before. The Precinct’s direct connections within the digital industry, funders, VCs and investors open the way forward for businesses to get assistance with scaling up their activities when the time is right.
Onboarding Process for a New recruites?
How Long Does Onboarding Take?
There is no strict rule about how long onboarding a new recruites should take. However, it’s important to be thorough in this process if you want to maximize employee engagement and minimize employee turnover. Many companies have an onboarding process that lasts only a month or a few weeks, which risks new recruits feeling overwhelmed with their new responsibilities and not connecting with the rest of the company.


#
# Ce fichier contient le ccode python appelé le Custom Transformer
# GEOPORTAL_WEBLINK_ADDER_NG
import fme
import fmeobjects
import requests
from Python.FME_utils import CsvKeyValuePair
from Python.FME_utils import FME_utils
# Constants
# FME attribute name
# FME published parameter as attributes
HTTP_STATUS_CODE = "_http_status_code"
ORDER = "_order"
URL_VALIDATION = "_url_validation"
WEBLINK_WILDCARD = "_weblink_wildcard"
# FME attribute value
HTTP_OK = "200"
YES = "yes"
try:
import web_pdb
except:
# No problem if the package is not avalaible
pass
[docs]class FeatureProcessor(object):
"""This class implement the design pattern: *Processing Composite Data*"""
[docs] def __init__(self):
"""This constructor method created a dictionary and a list to store the features."""
self.csv_features = {} # Create a dictionary to load the CSV features
self.meta_features = [] # Create list to load the metadata features
# Create logger for loggin into FME
self.logger = fmeobjects.FMELogFile()
# Use one session that will be used by all http head reuqest to save time
self.session = FME_utils.create_session() # Create an http session
[docs] def _add_resources(self, feature, test_url):
"""Add the key value pair of the CSV into an extra resources{} list.
Key-Value pair are added as is except if the key is URL than the web link
is added as the value of the URL
Parameters
----------
feature: FmeFeature
Feature object to process
test_url: String
The URL address to add
Returns
-------
None
"""
# Count the number of ressouces{} in the attribute list
max_index = FME_utils.max_index_attribute_list(feature, "resources{}")
max_index += 1 # Add one ressources
for key, value in self.csv_features.items():
if key == "url":
# Update the value if the key is "url"
value = test_url
# Add attribute to the FME feature
resources_name = "resources{%d}.%s"%(max_index, key) # Set the attribute name
feature.setAttribute(resources_name, value) # Set the attribute
return
[docs] def close(self):
"""Map the requested attribute.
The following tasks are performed:
- Extract the url to test (attribute test_url)
- Extract the flag for the URL validation
- Build the http to validate
- Add an extra resource at the end of the ressources{} list with the
values from the CSV file and change the value of the URL with the
url used to test the link
"""
# web_pdb.set_trace()
# Extract the URL for testing
try:
url_value = self.csv_features["url"]
except KeyError:
url_value = "" # In case the url entry is missing
# Loop over each FME features
for feature in self.meta_features:
# Check if URL validation is requested
bool_url_validation = FME_utils.test_attribute_value(feature, URL_VALIDATION, YES, False)
# Extract the suffix to build the http requested
suffix = feature.getAttribute("_weblink_wildcard")
if url_value == "":
# test url is empty
test_url = suffix
else:
# Test url is not empty
test_url = url_value + "/" + suffix # Build the http request
if bool_url_validation:
# Test if the url link is responding with a http head call (faster than get request)
response = self.session.head(test_url, verify=False, timeout=10,
allow_redirects=True)
status_code = str(response.status_code)
self.logger.logMessageString("Status code: {0}; HTTP request head: {1}"
.format(status_code, test_url), fmeobjects.FME_INFORM)
else:
# Do not test if the link is valid and simulate a valid request
status_code = HTTP_OK
# Set the status code attribute
feature.setAttribute(HTTP_STATUS_CODE, status_code)
if status_code == HTTP_OK:
# Add the key-value pairs contained in the CSV in the ressources{} list
self._add_resources(feature, test_url)
# Output the feature to FME after processing all the attributes
self.pyoutput(feature)
return


Thanks for starting your project with cloudscribe!
Here are some informative tips to help you get started.
IMPORTANT: Update all the cloudscribe NuGet packages to the latest version before you do anything else.
Right click the solution node and choose "Manage NuGet Packages for Solution", then check for any available updates.
We would really appreciate it if you would Register on cloudscribe.com
if you haven't already, and be sure to checkout the Documentation.
You can also ask questions in our gitter chat web page.
Click the "watch" button in the cloudscribe Announcements Repository to get notified about any major or breaking changes in future updates to our NuGet packages.
If you like cloudscribe and our Visual Studio project template, please give us a good review in
the Visual Studio Marketplace
Follow @cloudscribeweb and @joeaudette on Twitter!
Next Steps
-
Be aware of potential long file name errors on windows.
You chose NoDb file system storage for data storage. There is a known issue on windows that may potentially impact you. Just keep this in mind
if you encounter any "path too long" exceptions. Since NoDb uses long guids for file names and also for some folder names it can result in long file paths that may exceed the 255 character
file path limit on windows. The best way to avoid that problem is to use a short folder path such as c:\c\yourprojectname, if you use a very deep
nested path you may encounter errors.
-
Login Credentials
When you first run the project application an administrative user account will be created automatically with the email<EMAIL_ADDRESS>and the password admin. Once you login with administrative permissions a new Administration menu will appear, you should take a look around
the various menu items to find the configurable settings that are of interest to you. One of the first things you should do is change the email
address and password of the admin user account. You can change the email under Administration > User Management > User List.
You can change the password by clicking the welcome user message at the top of the page. Be careful not to forget your password at least until
you have configured SMTP settings for email because password reset emails can't be sent until you do that.
If you deploy the application to public facing web hosting be sure to change these credentials immediately after deployment.
-
Data Protection
Be sure to see the comments in Startup.cs about data protection and how to configure the storage location of data protection keys.
Data protection keys are used to encrypt some settings that are persisted to data storage such as the password for SMTP, and the "secrets"
for social authentication.
-
Configure Email Settings for email notifications
In order for certain features like password reset or requiring a confirmed email to work, your site needs to be able to send email notifications.
You will find settings for this under Administration > Email Settings
-
Build your own custom features
Now that your project is created, you likely have plans to write some code for the custom features you need. cloudscribe doesn't impose
any prescriptive requirements or patterns for how you build your own features, you can typically use any patterns and approaches
that you would normally use in ASP.NET Core. But there is some guidance provided for getting the current user information and how to
optionally implement multi-tenancy in your own features if you need that.
See the Building Custom Features Documentation
for more information.

But more than likely you will want to create a custom theme.
See the Themes and Web Design
documentation for more information.
-
Configuration Sources
By default, the configuration system will let you override appsettings.json from appsettings.Development.json when the environment is Development.
I would avoid putting any sensitive information directly in appsettings.json because you will likely want to include that file in source control.
You can copy any settings from appsettings.json into appsettings.Development.json instead of putting anything sensitive in appsettings.json.
I generally add appsettings.Development.json to my .gitignore file so that any connection strings or credentials I put there won't go into source control.
It also supports overriding appsettings.json with appsettings.Production.json if the environment is Production. We don't include an
appsettings.Production.json file in the template, I usually would create that file manually on the production server as part of my first deployment.
For Azure hosting you would generally use Environment Variables or Azure Key Vault as discussed in the
official documentation.
-
Google Analytics
There is built in support for google analytics, you just add your profile id under Administration > Site Settings.
There is also tracking of account activities such as site registration and logins, including social login tracking.
To get the most benefit from google analytics, see the documentation.
Support cloudscribe by Buying Swag at Our CafePress Shop!
I've invested a lot of unpaid time and effort to make cloudscribe available and to keep improving it.
I really appreciate anything you can do to support my work, please help spread the word and encourage others to try
cloudscribe, and if you can spare a few bucks for a t-shirt or a voluntary payment I would be grateful.
See all the available merchandise on our CafePress shop!
We make about $5 on each item and you can help us spread awareness of cloudscribe with our branded products.
Only a few of our branded items are shown below.
Make a Voluntary Payment to Say Thanks!


Apple's 16in MacBook Pro is just as arduous as ever to repair
Oh crumbs
by Carly PageIT MIGHT PACK a spanking-new(ish) keyboard, but Apple's 16in MacBook Pro is just as problematic as ever to repair.
After taking a look at the laptop's Magic Keyboard and finding that it's pretty much identical to the non-crap 2015 version, iFixit has taken a closer look at the new MacBook Pro's guts and, more importantly, how difficult it is to put the laptop back together.
First off, that keyboard. Though it's less prone to crumb-induced borkage than the now-defunct butterfly mechanism, iFixit moans that it also features a less-replaceable design that's glued and riveted in place.
"Nooooo! Once again, the keyboard assembly is riveted down. Though the switches are likely less vulnerable to crumbly assailants, the keyboard itself isn't any more repairable than the Butterfly boards," the teardown team moans.
That's not the only bad news. The gadget-wreckers also bemoaned the new MacBook's internals - including its processor, RAM and flash memory - which all arrive soldered to the logic board. The Touch ID sensor is also locked in place, which iFixit notes will "greatly complicate" repairs.
The teardown does reveal some interesting tidbits about the 16in laptop, though, notably about Apple's new thermal system for improved venting and that is capable of pushing out 28 per cent more air to dissipate heat more effectively.
"Pardon us while we vent for a minute. Stacked atop its slightly-older sibling (the 15in 2019 model), the new MacBook Pro has some noticeably larger exhaust holes," iFixit notes. "That combined with these new fans, which feature bigger impeller blades, pushes 28% more air through the new Pro.
iFixit sheds some light on the beefier battery too, which Apple has achieved due to slightly thicker battery packs rather than a reworked arrangement.
Still, when it comes to repairability, things are just as awful as ever, it's only saving grace being that the trackpad can be easily replaced. However, that's not enough to save the MacBook from a shameful one out of 10 repairability score. µ
Further reading
The 16in MacBook Pro's keyboard is nearly identical to the 2015 version
- 18 Nov 2019
Apple's 16in MacBook Pro goes official with all-new 'Magic Keyboard'
- 13 Nov 2019
Apple's 16in MacBook Pro looks set to make official debut today
- 13 Nov 2019
Apple's 16in MacBook will reportedly launch any day now
- 22 Oct 2019


Adobe® LiveCycle® Designer (ES2)
|
Readme File |
|
Copyright 2010 Adobe Systems Incorporated. All rights reserved.
For important information that was not available when the product documentation and help was written, see the LiveCycle Designer ES2 Release Notes at www.adobe.com/go/learn_lc_designerReleaseNotes_9.
By installing this product, in addition to the Adobe license terms, you also agree to be bound by the third-party terms specified in the product documentation and the End User License Agreements at http://www.adobe.com/go/thirdparty. Adobe recommends that you review these third-party terms.
Readme File -- Adobe LiveCycle Designer ES2 -- 9/24/2010


Grandma's Special Recepie - Apple Pie
This was my grandmother's apple pie recipe. I have never seen another one quite like it. It will always be my favorite and has won me several first place prizes in local competitions. I hope it becomes one of your favorites as
well!
Our favorite grandma's recipe for making classic apple pie from scratch. This recipe guarantees apple pie with perfectly cooked (not mushy) apples surrounded by a thickened and gently spiced sauce all baked inside a flaky,
golden brown crust.
| Incredients | Quantity | Directions |
|---|---|---|
| Milk | 1 Cup | Preheat oven to 425 degrees F (220 degrees C). Melt the butter in a saucepan. Stir in flour to form a paste. Add water, white sugar and brown sugar, and bring to a boil. Reduce temperature and let simmer. |
| Sugar | 1/4 Cup | Place the bottom crust in your pan. Fill with apples, mounded slightly. Cover with a lattice work crust. Gently pour the sugar and butter liquid over the crust. Pour slowly so that it does not run off. |
| Apple | 2 | Bake 15 minutes in the preheated oven. Reduce the temperature to 350 degrees F (175 degrees C). Continue baking for 35 to 45 minutes, until apples are soft. |


You forgot to set the session variables!
editCollaborationsCollection
editCollaborationsMongoIds
{{|> dataLoading}}
{{|> shareAndDeleteButtons}}
Note that you can pass an onDelete attribute which will be called if the object is deleted with the delete button.
{{|> showErrorMessage}}
{{|> contactUsButton}}
The URL within patient-care is include in the subject of the email :)
{{> contactUsButton}}{{|> listSamplesButton}}
{{|> viewJobButton}}
{{|#semanticUIDropdown}}code{{|/semanticUIDropdown}}
This simply calls instance.$(".ui.dropdown").dropdown(options)
{{|#jobWrapper options}}
if done
{{|else}}
if not done
{{|/jobWrapper}}
This one is really hard to demonstrate because the job subscription is handled from within the template, but that's how you use it!
Options include:
job_id
: the id of the jobtitle
: The title of the job, to be shown in an h1
listRoute
:
the name of the route to be redirected to if the job is deleted
argsTemplate
:
the name of the template describing the job arguments
Note that in the else block is shown when the job is in any state other than done.
{{|> showRecords}}
This will show records in a Handsontable. See manageForms or manageGeneSets for a code example.
You can pass in hotPassback, which is a JSON object that should be
initialized as such:
{ initialized: new ReactiveVar(false) }
.
This object will have the hotInstance
set as the return
value of the new Handsontable
call. When that happen,
initialized
will be set to true. This is useful for
doing things like having an export button that's not right next to
the HOT on the page. (See recordsDownloadButton
.)
{{|> recordsDownloadButton hotPassback=hotPassback
cssClass="small" filename="file will be called this.txt"}}
This creates a download button from the hotPassback mentioned above.
editCollaborationsCollection
editCollaborationsMongoIds
geneSetIdForGsea
query parameter.}}
{{#if permissionLikelyDenied}}
{{else}}
{{> dataLoading}}
{{/if}}
{{/if}}


Guidance
Resources and information for new and existing providers of apprenticeship training to help them get ready to work with employers.
This information is for all providers who wish to offer apprenticeship training in England from May 2017. This includes existing providers as well as organisations that might wish to enter the apprenticeship training market.
Apprenticeship funding for 2017 is in 3 parts:
The SFA is committed to existing learners completing their programmes
To help you prepare to be an apprenticeship training provider, you may find the following links to background information useful:
To help you determine what opportunities exist as you plan and develop your apprenticeship provision, you could look at data such as:
There are a number of organisational issues that new and existing providers will need to consider including:
There are many organisations that you can choose to work with or who might support your training, planning, development and delivery:
If you are an existing provider, you may be on the register of training organisations .
There is no transfer to the register of apprenticeship training providers from the register of training organisations.
The register of training organisations will continue for adult education budget provision, traineeships and advanced learner loans.
In order for an employer to be able to select you as a provider on the digital apprenticeship service, you will need to successfully apply to the register of apprenticeship training providers .
A successful application to register of apprenticeship training providers means that levy-paying employers can select you to deliver their apprenticeship training. The SFA will put in place a provider agreement with you so that you can be paid for work you undertake.
If you wish to work with employers who will not be paying the levy, you must also respond to a separate invitation to tender and submit a successful bid.
In order for you to apply to be on the register of apprenticeship training providers so that you can offer apprenticeship training, you need to:
We will ask for this information on your register of apprenticeship training providers application. You must register your legal name against the UKPRN. If you are a sole trader or partnership make sure that you include your trading name in your registration.
The contact name should be that of a senior member of your organisation so that you can respond quickly to tender opportunities. The contact name should be kept up to date as we may send alert on the progress of your application. You will need to access the account to access the questions, replies and documentation when we are open for applications.
Registering with the Information Commissioner’s Office is a legal requirement. We will check your registration when we review your application.
As you prepare your application to register of apprenticeship training providers, you should:
If you intend to respond to the invitation to tender (ITT) to work with employers that will not be paying the apprenticeship levy, you should also log on to Bravo and read the ITT specification.
Before you apply to the register of apprenticeship training providers, you should consider:
You may also wish to become an apprentice assessment organisation. The register of apprentice assessment organisations is a list of organisations that have been assessed as being suitable to conduct independent end-point assessment of apprentices and be in receipt of public funds.
An employer will be asked to select an end point assessment organisation from this register to support the delivery of their apprenticeship standards.
End-point assessment is separate to any qualifications or other assessment that the apprentice may undertake during training.
Assessments will either be delivered by an independent third party or in such a way that no party who has been involved in delivery of the apprenticeship can make the sole decision on competence and passing the end-point assessment.
Higher education institutions are the assessment organisations for integrated degree apprenticeships.
You can find full details on apprenticeship funding on GOV.UK:
Once you have been selected by an employer to deliver training to their apprentices, you will need to negotiate costs and ensure contracts are in place so that the funding can flow.
The costs for any end point assessment will be included in the total price for the apprenticeship you agree with the employer. You will be required to pass this agreed amount on to the assessment organisation selected by the employer.
You will need to add your details and your apprenticeship training offer to the find apprenticeship training service using the course directory portal .
If you have already uploaded information, you will need to review it regularly to ensure that it is up to date.
If you are on the register of apprenticeship training providers, an employer will then be able to find you when they search for organisations who can offer apprenticeship training.
You will need to send accurate information regarding the apprentices you are working with to the SFA on a monthly basis. We collect this information from the individualised learner record (ILR) .
ILR information is used to:
We will publish a guide to the ILR to help you report on your new apprenticeship starts from May 2017.
Once you have your ILR file, you should submit it to the Hub at the correct time.
You will need to assign a Hub super user who can manage the data roles within your organisation. We have published a guide to user roles .
We supply an ILR learner entry tool software free of charge to providers who need to submit ILR data to the SFA but who do not have access to a data management system.
We will update this software before you are required to submit your first data return for new apprenticeship starts in June 2017.
You can download the ILR learner entry tool from the Hub .
You will need to confirm some information about the apprentices and the training that you are providing on the digital apprenticeship service.
Both you and the employer will need to confirm that this information is correct.
We will check this information against your ILR data before payments are made.
The employer may want you to enter details of the learners for them on the digital apprenticeship service. You will be able to do this on screen or through a data upload.

HESA has worked with the SFA to create a mechanism for simplifying the production of the ILR record.
For 2016 to 2017, an ILR schema compatible output file containing the relevant students can be produced from the submission of the HESA student record. You can then upload this ILR file to the Hub .
You can find further information on the HESA website .
You have your own quality assurance mechanisms in place, but you will also be subject to inspection or review by Ofsted for further education and skills, or by the Quality Assurance Agency (QAA) for higher education.
The common inspection framework sets out how Ofsted inspects further education and skills provision.
The SFA will use your ILR data to monitor your performance and for audit purposes.
You will need to retain evidence for audit as set out in the funding rules.
If you would like further information or support, you might find these helpful:
Published: 31 October 2016
From: Skills Funding Agency
Part of: Apprenticeships