CodePen is a social development environment for front-end designers and developers. It is a great place to save website designs and look for inspiration from the developer community.
CodePen is a social development environment for front-end designers and developers. It is a great place to save website designs and look for inspiration from the developer community.
W3Schools is a popular web site for learning web technologies online. I use this for quick tutorials and ways to implement the many features of HTML and CSS.
Stack Overflow is the largest, most trusted online community for developers. If I'm having a problem, there is a very good chance that someone else has had it and solved it, so this is a good place to see multiple answers to the same problem.
The simpler way to learn HTML and CSS, in a beautifully presented, full-color book. This is the best textbook I've ever used, regardless of subject. It does and excellent job of explaining the subjects it covers.


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @(params: Map[String, Any]) @uk.gov.hmrc.hmrcemailrenderer.templates.helpers.html.template_main(params, "Successful registration for CBC") {
Dear @{params("name")}
Your CBC ID is: @{params("cbcID")}
You can now use your business tax account to give other people in your organisation access to the CBC service.
Print or save a copy of this email for your records.
To make a report:
For security reasons, we have not included a link to this service in this email.
You can email aeoi.enquiries@@hmrc.gov.uk if you have any questions.
If you need more information, search ‘CBC’ on GOV.UK.
From the CBC service
}


Participant
Description: The collection of all data related to a specific participant in the context of a specific clinical trial.
Properties
| Property | Description | Data Type |
|---|---|---|
|
cimac_participant_id
required |
Participant identifier assigned by the CIMAC-CIDC Network. Formated as: C?????? (first 7 characters of CIMAC ID) |
<
string
: ^C[A-Z0-9]{3}[A-Z0-9]{3}$
>
|
|
participant_id
required |
Trial Participant Identifier. Crypto-hashed after upload. |
<
string
>
|
|
samples
required |
<
array
>
|
|
| cidc_participant_id | The generated, CIDC-internal identifier for this participant. |
<
string
: ^CIDC-\w+-\w+$
>
|
| cohort_name | Categorical description of cohorts, arms, and treatment groups. |
<
string
>
|
| essential_patient_entry_number | Deprecated |
<
integer
>
|
| gender | Identifies the gender of the participant. |
<
string
>
|
| race | 'NIH Racial and Ethnic Categories and Definitions for NIH Diversity Programs and for Other Reporting Purposes (NOT-OD-15-089), Release Date: April 8, 2015.' |
<
string
>
|
| ethnicity | 'NIH Racial and Ethnic Categories and Definitions for NIH Diversity Programs and for Other Reporting Purposes (NOT-OD-15-089), Release Date: April 8, 2015.' |
<
string
>
|
| clinical |
<
object
>
|
participant.full.json
{
"$id": "participant",
"$schema": "metaschema/strict_meta_schema.json#",
"additionalProperties": false,
"description": "The collection of all data related to a specific participant in the context of a specific clinical trial.\n",
"properties": {
"cidc_participant_id": {
"description": "The generated, CIDC-internal identifier for this participant.",
"example": "CIDC-Trial101-e1b2c3",
"in_doc_ref_pattern": "/participants/*/cidc_participant_id",
"pattern": "^CIDC-\\w+-\\w+$",
"type": "string"
},
"cimac_participant_id": {
"$comment": "With `in_doc_ref_pattern` here, there's no need to specify it each time cimac_participant_id is $ref'ed, constrain will be pulled in place by ref resolver automatically, assuring that it will be checked for every cimac_participant_id $ref.",
"description": "Participant identifier assigned by the CIMAC-CIDC Network. Formated as: C?????? (first 7 characters of CIMAC ID)",
"example": "CTTTP01",
"in_doc_ref_pattern": "/participants/*/cimac_participant_id",
"pattern": "^C[A-Z0-9]{3}[A-Z0-9]{3}$",
"type": "string"
},
"clinical": {
"$comment": "holds whatever non-harmonized annotations trial team provides",
"additionalProperties": true,
"type": "object"
},
"cohort_name": {
"$comment": "Values in this field are validated dynamically by `in_doc_ref_pattern`.",
"description": "Categorical description of cohorts, arms, and treatment groups.",
"example": "Arm_Z",
"in_doc_ref_pattern": "/allowed_cohort_names/*",
"type": "string"
},
"essential_patient_entry_number": {
"$comment": "Used to provide id for patient entry in a shipment manifest, left here for back-compat.",
"description": "Deprecated",
"type": "integer"
},
"ethnicity": {
"description": "'NIH Racial and Ethnic Categories and Definitions for NIH Diversity Programs and for Other Reporting Purposes (NOT-OD-15-089), Release Date: April 8, 2015.'\n",
"enum": [
"Hispanic or Latino",
"Not Hispanic or Latino",
"Not reported",
"Unknown",
"Other"
],
"type": "string"
},
"gender": {
"description": "Identifies the gender of the participant.",
"enum": [
"Male",
"Female",
"Not Specified",
"Other"
],
"type": "string"
},
"participant_id": {
"description": "Trial Participant Identifier. Crypto-hashed after upload.",
"encrypt": true,
"type": "string"
},
"race": {
"description": "'NIH Racial and Ethnic Categories and Definitions for NIH Diversity Programs and for Other Reporting Purposes (NOT-OD-15-089), Release Date: April 8, 2015.'\n",
"enum": [
"American Indian/Alaska Native",
"Asian",
"Black/African American",
"Native Hawaiian/Pacific Islander",
"White",
"Not Reported",
"Unknown",
"Other"
],
"type": "string"
},
"samples": {
"items": {
"$id": "sample",
"$schema": "metaschema/strict_meta_schema.json#",
"additionalProperties": false,
"description": "Any material sample taken from a biological entity for testing, diagnostic, propagation, treatment or research purposes, including a sample obtained from a living organism or taken from the biological object after halting of all its life functions. Biospecimen can contain one or more components including but not limited to cellular molecules, cells, tissues, organs, body fluids, embryos, and body excretory products.",
"if": {
"properties": {
"type_of_sample": {
"enum": [
"Blood"
]
}
}
},
"properties": {
"a260_a230": {
"description": "Provides an absorbance percentage ratio indicating presence of contaminants (values of 0 to 3)",
"type": "number"
},
"a260_a280": {
"description": "Provides an absorbance percentage ratio indicating purity of DNA (values of 0 to 2)",
"type": "number"
},
"aliquots": {
"description": "Pertaining to a portion (volume or weight) of the whole.",
"items": {
"$id": "aliquot",
"$schema": "metaschema/strict_meta_schema.json#",
"additionalProperties": false,
"description": "Pertaining to a portion (volume or weight) of the whole.",
"properties": {
"aliquot_amount": {
"$comment": "RECHECK Should this be moved to the sample level or renamed?",
"description": "The amount of extracted aliquot shipped. Example: 400 ng",
"type": "string"
},
"aliquot_replacement": {
"description": "Status of aliquot if replacement is/was requested.",
"enum": [
"Replacement Requested",
"Replacement Tested",
"N/A"
],
"type": "string"
},
"aliquot_status": {
"description": "Status of aliquot used for other assay, exhausted, destroyed, or returned.",
"enum": [
"Aliquot Returned",
"Aliquot Exhausted",
"Remainder used for other Assay",
"Other",
"Aliquot Leftover"
],
"type": "string"
},
"extracted_concentration": {
"description": "The concentration of biological material that was extracted from this aliquot.",
"type": "string"
},
"lymphocyte_influx": {
"description": "Extent of lymphocytic infiltration into the tumor stroma or surrounding environment. Example: 2",
"type": "string"
},
"material_extracted": {
"description": "The type of biological material that was extracted from this aliquot.",
"enum": [
"DNA",
"RNA",
"cfDNA",
"Other"
],
"type": "string"
},
"quantity": {
"description": "Quantity of each aliquot shipped.",
"type": "integer"
},
"slide_number": {
"description": "Two digit number that indicates the sequential order of slide cuts, assigned by the CIMAC-CIDC Network.",
"pattern": "^[0-9]{1,2}$",
"type": "string"
}
},
"required": [
"slide_number",
"aliquot_replacement",
"aliquot_status"
],
"title": "Aliquot",
"type": "object"
},
"mergeOptions": {
"idRef": "/slide_number"
},
"mergeStrategy": "arrayMergeById",
"type": "array"
},
"box_number": {
"description": "Identifier if sample shipment container includes multiple boxes for each assay.",
"type": "string"
},
"cidc_id": {
"$comment": "in_doc_ref_pattern: /participants/*/samples/*/cidc_id",
"description": "The generated, CIDC-internal identifier for this sample.",
"example": "CIDC-Trial101-e1b2c3-a7b",
"pattern": "^CIDC-\\w+-\\w+-\\w+$",
"type": "string"
},
"cimac_id": {
"$comment": "With `in_doc_ref_pattern` here, there's no need to specify it each time cimac_id is $ref'ed, constrain will be pulled in place by ref resolver automatically, assuring that it will be checked for every cimac_id $ref.",
"description": "Specimen identifier assigned by the CIMAC-CIDC Network. Formatted as C????????.??",
"example": "CTTTP01A1.00",
"in_doc_ref_pattern": "/participants/*/samples/*/cimac_id",
"pattern": "^C[A-Z0-9]{3}[A-Z0-9]{3}[A-Z0-9]{2}.[0-9]{2}$",
"type": "string"
},
"clinical_report_id": {
"description": "A unique identifier so someone can find the clinical report.",
"encrypt": true,
"type": "string"
},
"collection_event_name": {
"$comment": "Values in this field are validated dynamically by `in_doc_ref_pattern`.",
"description": "Categorical description of timepoint at which the sample was taken.",
"in_doc_ref_pattern": "/allowed_collection_event_names/*",
"title": "Collection Event Name",
"type": "string"
},
"comments": {
"description": "Comments on sample testing.",
"type": "string"
},
"core_number": {
"description": "The biopsy core number from which the sample was used.",
"type": "number"
},
"diagnosis_verification": {
"description": "Indicates whether the local pathology review was consistent with the diagnostic pathology report.",
"enum": [
"Local pathology review was not consistent",
"Local pathology review was consistent with site of tissue procurement diagnostic pathology report",
"Not Available",
"Not Reported",
"Other"
],
"title": "Diagnosis verification",
"type": "string"
},
"din": {
"description": "Provides a DNA Integrity Number as an indication of extraction quality (values of 1-10)",
"type": "number"
},
"fibrosis_area_percentage": {
"description": "Score the percentage area of Fibrosis",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"fixation_stabilization_type": {
"description": "Type of specimen fixation or stabilization that was employed by the site directly after collection.",
"enum": [
"Archival FFPE",
"Fresh Specimen",
"Frozen Specimen",
"Formalin-Fixed Paraffin-Embedded",
"Optimum cutting temperature medium",
"Thaw-Lyse",
"Not Reported",
"Other"
],
"type": "string"
},
"histology_behavior": {
"description": "ICD-0-3 code for histology and behavior. e.g. 9665/3",
"type": "string"
},
"histology_behavior_description": {
"description": "ICD-0-3 histology and behavior code description. e.g. Hodgkin lymphoma, nod. scler., grade 1",
"type": "string"
},
"intended_assay": {
"description": "The assay that this sample is expected to be used as input for.",
"type": "string"
},
"material_remaining": {
"description": "Receiving site indicates how much material remains after assay use.",
"type": "number"
},
"material_remaining_units": {
"description": "Units for the amount of material remaining.",
"enum": [
"Microliters",
"Milliliters",
"Nanogram per Microliter",
"Milligram per Milliliter",
"Micrograms per Microliter",
"Cells per Vial",
"Slides",
"Not Reported",
"Other"
],
"type": "string"
},
"material_storage_condition": {
"description": "Storage condition of the material once it was received.",
"enum": [
"RT",
"4oC",
"(-20)oC",
"(-80)oC",
"LN",
"Not Reported",
"Other"
],
"type": "string"
},
"material_used": {
"description": "Receiving site indicates how much material was used for assay purposes.",
"type": "number"
},
"material_used_units": {
"description": "Units for the amount of material used; should be the same value as Specimen Analyte units.",
"enum": [
"Microliters",
"Milliliters",
"Nanogram per Microliter",
"Milligram per Milliliter",
"Micrograms per Microliter",
"Cells per Vial",
"Slides",
"Not Reported",
"Other"
],
"type": "string"
},
"necrosis_area_percentage": {
"description": "Score the percentage area of necrosis",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"parent_sample_id": {
"description": "Sample identifier assigned by the biorepository site. Crypto-hashed after upload.",
"encrypt": true,
"type": "string"
},
"pbmc_recovery": {
"description": "Receiving site determines number for PBMCs per vial recovered upon receipt.",
"type": "number"
},
"pbmc_resting_period_used": {
"description": "Receiving site indicates if a resting period was used after PBMC recovery.",
"enum": [
"Yes",
"No",
"Not Reported",
"Other"
],
"type": "string"
},
"pbmc_viability": {
"description": "Receiving site determines the percent recovered cells that are viable after thawing.",
"type": "number"
},
"processed_sample_concentration": {
"description": "The concentration of the processed sample.",
"type": "number"
},
"processed_sample_concentration_units": {
"description": "The concentration units for the processed sample.",
"enum": [
"Nanogram per Microliter",
"Milligram per Milliliter",
"Micrograms per Microliter",
"Cells per Vial",
"Not Reported",
"Other"
],
"type": "string"
},
"processed_sample_derivative": {
"description": "The type of derivative or analyte extracted from the specimen to be shipped for testing.",
"enum": [
"Tumor DNA",
"Tumor RNA",
"Germline DNA",
"Circulating Tumor-Derived DNA",
"Not Reported",
"Other"
],
"type": "string"
},
"processed_sample_id": {
"description": "Aliquot identifier assigned by the biorepository site. Crypto-hashed after upload.",
"encrypt": true,
"type": "string"
},
"processed_sample_quantity": {
"description": "Quantity of the processed sample (e.g. number of slides cut for DNA extraction).",
"type": "number"
},
"processed_sample_type": {
"description": "The type of processing that was performed on the collected specimen by the Biobank for storage.",
"enum": [
"Whole Blood",
"Plasma",
"PBMC",
"Buffy Coat",
"Bone Marrow Mononuclear Cell",
"Supernatant",
"Cell Pellet",
"H&E-Stained Fixed Tissue Slide Specimen",
"Fixed Slide",
"Tissue Scroll",
"FFPE Punch",
"Not Reported",
"Other"
],
"type": "string"
},
"processed_sample_volume": {
"description": "Volume of the processed sample.",
"type": "number"
},
"processed_sample_volume_units": {
"description": "Volume units of each processed sample.",
"enum": [
"Microliters",
"Milliliters",
"Not Reported",
"Other"
],
"type": "string"
},
"quality_of_sample": {
"description": "Final status of sample after QC and pathology review.",
"enum": [
"Pass",
"Fail",
"Not Reported",
"Other"
],
"type": "string"
},
"residual_sample_use": {
"description": "Indication if sample was sent to another location or returned back to biorepository.",
"enum": [
"Sample Returned",
"Sample Sent to Another Lab",
"Sample received from CIMAC",
"Not Reported",
"Other"
],
"type": "string"
},
"sample_collection_procedure": {
"description": "Indicates the specimen source of the sample shipped. Example: Na Heparin blood draw aliquots (2 of three), FFPE block #52",
"enum": [
"Blood Draw",
"Excision",
"Core Biopsy",
"Punch Biopsy",
"Endoscopic Biopsy",
"Bone Marrow Core Biopsy",
"Bone Marrow Aspirate",
"Lumbar Puncture",
"Aspirate",
"Fine-Needle Aspiration",
"Not Reported",
"Other"
],
"type": "string"
},
"sample_derivative_concentration": {
"description": "The concentration of analyte or derivative shipped.",
"type": "number"
},
"sample_derivative_concentration_units": {
"description": "The concentration units for the analyte or derivative shipped.",
"enum": [
"Nanogram per Microliter",
"Milligram per Milliliter",
"Micrograms per Microliter",
"Cells per Vial",
"Not Reported",
"Other"
],
"type": "string"
},
"sample_derivative_volume": {
"description": "Volume of the analyte or derivative shipped.",
"type": "number"
},
"sample_derivative_volume_units": {
"description": "Volume units of each analyte or derivative shipped.",
"enum": [
"Microliters",
"Milliliters",
"Not Reported",
"Other"
],
"type": "string"
},
"sample_location": {
"description": "Sample location within the shipping container. Example: A1.",
"type": "string"
},
"sample_replacement": {
"description": "Indication if sample replacement is/was requested.",
"enum": [
"Replacement Not Requested",
"Replacement Requested",
"Replacement Tested",
"Not Reported",
"Other"
],
"type": "string"
},
"sample_volume": {
"description": "Volume of the parent sample (e.g. Heparin tube volume)",
"type": "number"
},
"sample_volume_units": {
"description": "Unit for the parent sample volume.",
"enum": [
"Microliter",
"Milliliter",
"Not Reported",
"Other"
],
"type": "string"
},
"shipping_entry_number": {
"description": "Provides a numbered identifier for patient (sample) entry in a shipment manifest.",
"type": "integer"
},
"site_description": {
"description": "Descritpion of the topography category. e.g LUNG AND BRONCHUS",
"type": "string"
},
"surgical_pathology_report_id": {
"description": "A unique identifier so someone can find the surgical pathology report.",
"encrypt": true,
"type": "string"
},
"topography_code": {
"description": "ICD-0-3 topography site code from which a specimen was isolated. e.g. C34.1",
"type": "string"
},
"topography_description": {
"description": "ICD-0-3 site code description. e.g. Upper lobe, lung",
"type": "string"
},
"tumor_tissue_total_area_percentage": {
"description": "Score the percentage of tumor (including tumor bed) tissue area of the slide (e.g. vs non-malignant or normal tissue)",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"type_of_primary_container": {
"description": "The format in which the sample was sent.",
"enum": [
"Sodium heparin",
"Blood specimen container with EDTA",
"Potassium EDTA",
"Streck Blood Collection Tube",
"Stool collection container with DNA stabilizer",
"Not Reported",
"Other"
],
"type": "string"
},
"type_of_sample": {
"description": "Type of sample sent.",
"enum": [
"Tumor Tissue",
"Normal Tissue",
"Skin Tissue",
"Blood",
"Bone Marrow",
"Cerebrospinal Fluid",
"Lymph Node",
"Stool",
"Not Reported",
"Other"
],
"type": "string"
},
"type_of_tumor_sample": {
"description": "The type of tumor sample obtained (primary or metastatic).",
"enum": [
"Metastatic Tumor",
"Primary Tumor",
"Not Reported",
"Other"
],
"type": "string"
},
"viable_stroma_area_percentage": {
"description": "Score the evaluation of stromal elements (this indicates the % area of tumor bed occupied by non-tumor cells, including inflammatory cells [lymphocytes, histiocytes, etc], endothelial cells, fibroblasts, etc)",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"viable_tumor_area_percentage": {
"description": "Score the percentage of viable tumor cells comprising the tumor bed area",
"maximum": 100,
"minimum": 0,
"type": "number"
}
},
"required": [
"cimac_id",
"parent_sample_id",
"collection_event_name",
"sample_location",
"type_of_sample"
],
"then": {
"required": [
"type_of_primary_container"
]
},
"title": "Sample",
"type": "object"
},
"mergeOptions": {
"idRef": "/cimac_id"
},
"mergeStrategy": "arrayMergeById",
"type": "array"
}
},
"required": [
"cimac_participant_id",
"participant_id",
"samples"
],
"title": "Participant",
"type": "object"
}


The Notifier utility helps you to send notifications to the user.
Start creating an instance of Notifier using the kiui.notifier()
function, it accepts a single position
option that can
have four values: top-left
, bottom-left
, bottom-right
or top-right
. Default is top-right
.
The Notifier exposes three methods that you can use to create different kinds of notifications: error()
, info()
and success()
.
Each method accepts the following options:
append
: when set to true
, the given content will be appended to a previous notification of the same type;
if such a notification does not exist, a standard notification will be created instead. (Default: false
)
autoHide
: when set to a number, the notification will be automatically hidden after the given amount of milliseconds. If set to
false
the notification will have to be hidden manually.
(Default: false
)
content
: the html content that will be inserted inside the notification.
icon
: the html that will be used as icon for the notification, if set to ""
the icon will be hidden.
(Default: every method has its specific default icon)
title
: the notification title, if set to ""
the title will be hidden. (Default: ""
)
width
: the notification width in pixels. (Default: 250
)


A dividend is a payment that a company gives to shareholders to distribute profits. When a dividend payment occurs for an Equity in your algorithm, LEAN sends a Dividend
object to the OnData
method. Dividend
objects have the following properties:
If you backtest with the Adjusted
or TotalReturn
data normalization mode, the dividends are factored into the price. If you backtest with the other data normalization modes or trade live, when a dividend payment occurs, LEAN automatically adds the payment amount to your cashbook. If you have indicators in your algorithm, reset your indicators when dividend payments occur so that the data in your indicators account for the price adjustments that the dividend causes.
To get the Dividend
objects in the Slice
, index the Dividends
property of the Slice
with the security Symbol
. The Slice
may not contain data for your Symbol
. To avoid issues, check if the Dividends
property contains data for your security before you index it with the security Symbol
.
public override void OnData(Slice slice) { if (slice.Dividends.ContainsKey(_symbol)) { var dividend = slice.Dividends[_symbol]; } } public void OnData(Dividends dividends) { if (dividends.ContainsKey(_symbol)) { var dividend = dividends[_symbol]; } }
def OnData(self, slice: Slice) -> None: dividend = slice.Dividends.get(self.symbol) if dividend: pass
You can also iterate through the Dividends
dictionary. The keys of the dictionary are the Symbol
objects and the values are the Dividend
objects.
public override void OnData(Slice slice) { foreach (var kvp in slice.Dividends) { var symbol = kvp.Key; var dividend = kvp.Value; } } public void OnData(Dividends dividends) { foreach (var kvp in dividends) { var symbol = kvp.Key; var dividend = kvp.Value; } }
def OnData(self, slice: Slice) -> None: for symbol, dividend in slice.Dividends.items(): pass
For a full example, see the DividendAlgorithmDividendAlgorithm in the LEAN GitHub repository.


The 555 timer chip has been around since the 70s, so does the world really need another website for calculating the circuit values?
No! But I made one anyway … it's largely an excuse to play around with HTML5 canvas and coffeescript! All the source code for this page is on GitHub.
For an example of a 555 circuit hooked up with Arduino and Processing, check out AstableOscillator and Monostable, from the LittleArduinoProjects collection.


| API |
APIs define sets of HTTP URL paths available on the World-wide Web Historical Note: The APIProduct concept in Apigee Edge (circa 2016) is an amalgam of the API and APIProduct concepts
| Property Name |
Property Type |
Property Description |
| kind |
string |
The value of this property indicates the 'kind' or 'type' of the object. Its value must be the string "API" |
| name |
string |
The name of the API. Must be unique amongst APIs of the same org. The name of the product, along with the name of the org, may be used to perform queries using URI templates of the form: https://api.enterprise.apigee.com/v1/organizations/{org-name}/apis/{api-name}
|
| displayName |
|
The name to be used to display to humans for this API. Used in the UI. type: string
|
| description |
string |
A textual description of the API |
| environments |
[0:1 (Environment)] |
Environments where this API is available. Defines the domain names where the paths of the API will be available |
| uriPaths |
[string] |
Defines the URI paths to which this API gives access. May include wildcard characters, for example /a/*, or /a/**
|
| ui_namesOfProxiesProvidingPaths |
[string] |
The API is specified by the uriPaths property, which defines the paths of the API. As a convenience, the UI allows the uriPaths to be specified by picking from the list of paths supported by a particular proxy. If the user does this, the UI will use this property to remember the names of proxies that were used as sources
|
|
| APIProduct |
APIProducts define a set of rules, such as quota, constraining client access to a specific API. Historical Note: The APIProduct concept in Apigee Edge (circa 2016) is an amalgam of the API and APIProduct concepts
| Property Name |
Property Type |
Property Description |
| kind |
string |
The value of this property indicates the 'kind' or 'type' of the object. Its value must be the string "APIProduct" |
| name |
string |
The name of the APIProduct. Must be unique amongst APIProduct of the same org. The name of the APIProduct, along with the name of the org, may be used to perform queries using URI templates of the form: https://api.enterprise.apigee.com/v1/organizations/{org-name}/apiproduct/{apiproduct-name}
|
| displayName |
string |
The name to be used to display to humans for this APIProduct. Used in the UI.
|
| description |
string |
A textual description of the APIProduct |
| api |
0:1 (API) |
The API exposed by this APIProduct.
|
| scopes |
[string] |
Defines the OAUTH scopes to which this APIProduct gives access
|
| quota |
| Property Name |
Property Type |
Property Description |
| limit |
integer |
|
| interval |
integer |
|
| timeunit |
string |
|
|
Defines the quota of requests allowed by this APIProduct.
|
|
| Subscription |
Subscriptions record the usage of an Subscription by a subscriber. Historical Note: The App concept in Apigee Edge (circa 2016) is similar to the Subscription concept, to the point where it can be considered a renaming. App was not the best choice of name because the concept being modelled is not an app, it is just a key-protected usage of an APIProduct. Using one of these subscriptions per app is only a suggestion—it is not possible to know whether customers use a single subscription for a single app, a single subscription for many apps, or a many subscriptions for one app.
| Property Name |
Property Type |
Property Description |
| kind |
string |
The value of this property indicates the 'kind' or 'type' of the object. Its value must be the string "Subscription" |
| name |
string |
The name of the Subscription. Must be unique amongst Subscription of the same org. The name of the Subscription, along with the name of the org, may be used to perform queries using URI templates of the form: https://api.enterprise.apigee.com/v1/organizations/{org-name}/subscription/{Subscription-name}
|
| displayName |
|
The name to be used to display to humans for this Subscription. Used in the UI.
|
| description |
string |
A textual description of the Subscription |
| credentials |
| Property Name |
Property Type |
Property Description |
| apiProducts |
[
| Property Name |
Property Type |
Property Description |
| product |
0:1 (APIProduct) |
|
] |
The list of APIProducts to which this Subscription gives access
|
| key |
string |
The API key
|
| secret |
string |
The API secret
|
| issued |
string |
The date when the key and secret were issued
|
| approved |
boolean |
Whether or not the credentials have been approved by the API owner
|
|
The Key/Secret and the products they apply to. Unlike The 2016 Edge "App" concept, only one key per Subscription is supported. Edge was motiviated to allow many because they thought they were modeling apps, and apps may use multiple keys. Since subscriptions are not apps, and apps are free to use as many subscriptions as they like, there is no need to support multiples keys per Subscription
|
| subscriber |
0:1 (User) |
The User who is subscribing.
|
| approved |
boolean |
Whether or not the subscription has been approved by the API owner
|
|