| < Day Day Up > |
4.4 Follow the LeaderModifications to the basic flocking algorithm aren't strictly limited to obstacle avoidance. Because steering forces from a variety of rules are accumulated in the same variable and then applied all at once to control unit motion, you can effectively layer any number of rules on top of the ones we've already considered. One such additional rule with interesting applications is a follow-the-leader rule. As we stated earlier, the flocking algorithm we discussed so far is leaderless; however, if we can combine the basic flocking algorithm with some leader-based AI, we can open up many new possibilities for the use of flocking in games. At the moment, the three flocking rules will yield flocks that seem to randomly navigate the game world. If we add a leader to the mix, we could get flocks that move with greater purpose or with seemingly greater intelligence. For example, in an air combat simulation, the computer might control a squadron of aircraft in pursuit of the player. We could designate one of the computer-controlled aircraft as a leader and have him chase the player, while the other computer-controlled aircraft use the basic flocking rules to tail the leader, effectively acting as wingmen. Upon engaging the player, the flocking rules could be toggled off as appropriate as a dogfight ensues. In another example, you might want to simulate a squad of army units on foot patrol through the jungle. You could designate one unit as the point man and have the other units flock behind using either a wide-visibility model or a limited one, depending on whether you want them in a bunched-up group or a single-file line. What we'll do now with the flocking example we've been discussing is add some sort of leader capability. In this case, we won't explicitly designate any particular unit as a leader, but instead we'll let some simple rules sort out who should be or could be a leader. In this way, any unit has the potential of being a leader at any given time. This approach has the advantage of not leaving the flock leaderless in the event the leader gets destroyed or somehow separated from his flock. Once a leader is established, we could implement any number of rules or techniques to have the leader do something meaningful. We could have the leader execute some prescribed pattern, or chase something, or perhaps evade. In this example, we'll have the leader chase or intercept the user-controlled unit. Further, we'll break up the computer-controlled units into two types: regular units and interceptors. Interceptors will be somewhat faster than regular units and will follow the intercepting algorithms we discussed earlier in this book. The regular units will travel more slowly and will follow the chase algorithms we discussed earlier. You can define or classify units in an infinite number of ways. We chose these to illustrate some possibilities. Example 4-13 shows a few lines of code that you must add to the block of code shown in Example 4-3; the one that calculates all the neighbor data for a given unit. Example 4-13. Leader check. . . if(((w.y > 0) && (fabs(w.x) < fabs(w.y)*_FRONT_VIEW_ANGLE_FACTOR))) if(d.Magnitude() <= (Units[i].fLength * _NARROWVIEW_RADIUS_FACTOR)) Nf++; . . . if(InView && (Units[i].Interceptor == Units[j].Interceptor)) { . . . } . . . The first if block shown here performs a check, using the same narrow-visibility model we've already discussed, to determine the number of units directly in front of and within view of the current unit under consideration. Later, this information will be used to determine whether the current unit should be a leader. Essentially, if no other units are directly in front of a given unit, it becomes a leader and can have other units flocking around or behind it. If at least one unit is in front of and within view of the current unit, the current unit can't become a leader. It must follow the flocking rules only. The second if block shown in Example 4-13 is a simple modification to the InView test. The additional code checks to make sure the types of the current unit and Units[j] are the same so that interceptor units flock with other interceptor units and regular units flock with other regular units, without mixing the two types in a flock. Therefore, if you download and run this example program and toggle one of the flocking modes on, you'll see at least two flocks form: one flock of regular units and one flock of interceptor units. (Note that the player-controlled unit will be shown in green and you can control it using the keyboard arrow keys.) Example 4-14 shows how the leader rules are implemented for the two types of computer-controlled units. Example 4-14. Leaders, chasing and intercepting. . . // Chase the target if the unit is a leader // Note: Nf is the number of units in front // of the current unit. if(Chase) { if(Nf == 0) Units[i].Leader = true; else Units[i].Leader = false; if(Units[i].Leader) { if(!Units[i].Interceptor) { // Chase u = Units[0].vPosition; d = u - Units[i].vPosition; w = VRotate2D(-Units[i].fOrientation, d); if(w.x < 0) m = -1; if(w.x > 0) m = 1; Fs.x += m*_STEERINGFORCE; } else { // Intercept Vector s1, s2, s12; double tClose; Vector Vr12; Vr12 = Units[0].vVelocity - Units[i].vVelocity; s12 = Units[0].vPosition - Units[i].vPosition; tClose = s12.Magnitude() / Vr12.Magnitude(); s1 = Units[0].vPosition + (Units[0].vVelocity * tClose); Target = s1; s2 = s1 - Units[i].vPosition; w = VRotate2D(-Units[i].fOrientation, s2); if(w.x < 0) m = -1; if(w.x > 0) m = 1; Fs.x += m*_STEERINGFORCE; } } } . . . If you toggle the chase option on in the example program, the Chase variable gets set to true and the block of code shown here will be executed. Within this block, a check of the number of units, Nf, in front of and within view of the current unit is made to determine whether the current unit is a leader. If Nf is set to 0, no other units are in front of the current one and it thus becomes a leader. If the current unit is not a leader, nothing else happens; however, if it is a leader, it will execute either a chase or an intercept algorithm, depending on its type. These chase and intercept algorithms are the same as those we discussed earlier in the book, so we won't go through the code again here. These new leader rules add some interesting behavior to the example program. In the example program, any leader will turn red and you'll easily see how any given unit can become a leader or flocking unit as the simulation progresses. Further, having just the two simple types of computer-controlled units yields some interesting tactical behavior. For example, while hunting the player unit, one flock tails the player while the other flock seems to flank the player in an attempt to intercept him. The result resembles a pincer-type maneuver. Certainly, you can add other AI to the leaders to make their leading even more intelligent. Further, you can define and add other unit types to the mix, creating even greater variety. The possibilities are endless, and the ones we discussed here serve only as illustrations as to what's possible. |
| < Day Day Up > |


| ffscrapr::espn_authentication | ESPN: Private Leagues | HTML | source | ||
| ffscrapr::espn_basics | ESPN: Basics | HTML | source | R code | |
| ffscrapr::espn_getendpoint | ESPN: Get Endpoint | HTML | source | R code | |
| ffscrapr::ffscrapr_caching | ffscrapr: Managing Cache | HTML | source | R code | |
| ffscrapr::ffscrapr_scoringhistory | ffscrapr: ff_scoringhistory Limitations | HTML | source | ||
| ffscrapr::fleaflicker_basics | Fleaflicker: Basics | HTML | source | R code | |
| ffscrapr::fleaflicker_getendpoint | Fleaflicker: Get Endpoint | HTML | source | R code | |
| ffscrapr::mfl_basics | MFL: Basics | HTML | source | R code | |
| ffscrapr::mfl_getendpoint | MFL: Get Endpoint | HTML | source | R code | |
| ffscrapr::sleeper_basics | Sleeper: Basics | HTML | source | R code | |
| ffscrapr::sleeper_getendpoint | Sleeper: Get Endpoint | HTML | source | R code |


Merged Line 0
Merged Line 1
Merged Line 2
Merged Line 3
Merged Line 4
Merged Line 5
Merged Line 6
Merged Line 7
Merged Line 8
Merged Line 9
Merged Line 10


Whistle A: This site is using the standard WordPress Theme Unit Test Data for content. The Theme Unit Test is a series of posts and pages that match up with a checklist on the WordPress codex. You can use the data and checklist together to test your theme.
This site is using the standard WordPress Theme Unit Test Data for content. The Theme Unit Test is a series of posts and pages that match up with a checklist on the WordPress codex. You can use the data and checklist together to test your theme.
Whistle B: This is an example of a WordPress page, you could edit this to put information about yourself or your site so readers know where you are coming from.


Supervise children within arms’ reach at the beach
Do not let your children dig deep sand holes
- Do not swim if there is no sign
- Read beach safety signs before playing
- Swim between the red and yellow flags
- Swim at patrolled beaches
-Swim in designated area if sharks may be present
- Make sure there is a lifeguard
- Ask a lifeguard for safety advice
Protect your kids from the sun by sunscreen
Drink more water to stay hydrated


Introduction
Base URL for the API
https://api.bluematador.com
Welcome to the Blue Matador API. The API allows you to interact with Blue Matador resources outside of the UI. All endpoints use standard HTTP verbs, authentication, and JSON for request and response bodies.
Authentication
An example of authenticating with Blue Matador
curl "api_endpoint_here"
-H "Authorization: D6bSkilgbSVm8djsMcMkrcD4QbCJ0n35"
Make sure to replace
D6bSkilgbSVm8djsMcMkrcD4QbCJ0n35
with your API key
All API endpoints are scoped to an account and require an API key for access. You can retrieve an API key for an account by visiting the in app page for API keys.
Once you have an API key, you can authenticate calls to Blue Matador by passing your API key as the value for the Authorization
header:
Authorization: D6bSkilgbSVm8djsMcMkrcD4QbCJ0n35
Events
The Events API allows you to retrieve event related data from Blue Matador.
Get Opened Events
Example Request
curl "https://api.bluematador.com/ma/api/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/events?start=2019-03-22T00:00:00Z&end=2019-03-23T00:00:00Z"
Example Response
[
{
// id of the event
"id": "b97da6af-1f87-4cd1-992f-113a60be9358",
// id of the account
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
// event opened date
"opened": "2019-03-22T15:07:08Z",
// event close date (optional)
“closed”: null,
// enum of the type of event
"eventType": "route53_zone_ns",
// display string for type of event
"typeText": "Route53 Zone NS Records",
// display string for event summary
"summaryText": "The configured NS records for the zone does not match the actual query response",
// list of additional details about the event
"detailTexts": [
"ns-1408.awsdns-60.org.",
"ns-1781.awsdns-18.co.uk.",
"ns-31.awsdns-04.com.",
"ns-792.awsdns-26.net."
],
// anomaly, warning, alert
"severity": "anomaly",
// details about the resource affected by the event
"source": {
// identification data about the resource
"ref": {
"arn": "arn:aws:route53:::hostedzone/Z132S03H3a5QD",
"refType": "aws_arn"
}",
// a label describing the type of resource
"label": "Route53 Zone",
// a text representation of the resource
"text": "thedevcloud.com.",
// a list of key-value pairs that further identify the resource
"tags": [
{
"key": "AWS Account",
"value": "blue-poc"
},
{
"key": "Public",
"value": "true"
},
{
"key": "Zone ID",
"value": "Z132S03H3a5QD"
}
]
},
// links to event troubleshooting, AWS, and incident management
"links": [
{
"linkType": "troubleshooting",
"text": "Troubleshooting",
"url": "https://app.bluematador.com/ur/troubleshooting/route53-hosted-zone#ns",
"created": "2019-03-22T17:11:08.092Z"
},
{
"linkType": "aws",
"text": "AWS Console",
"url": "https://app.bluematador.com/ur/awsLink?url=https%3A%2F%2Fconsole.aws.amazon.com%2Froute53%2Fhome%23resource-record-sets%3AZ152S03H3I5QD",
"created": "2019-03-22T17:11:08.092Z"
}
],
// a list of projects the event belongs to
"projects": [
{
"id": "6f0ac475-4594-4b86-87d7-7f8b0645126a",
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"created": "2019-02-19T17:41:05Z",
"name": "Sandbox"
}
],
// whether the event was not sent to notification systems
"muted": false,
// whether the event should be hidden
"hidden": false
},
…
]
This endpoint retrieves Blue Matador events from an account that were opened within a time period
HTTP Request
GET https://api.bluematador.com/ma/api/accounts/<account_id>/events
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account to get events from |
Query Parameters
| Name | Type | Description |
|---|---|---|
| start | ISO 8601 date | the open time for the earliest events to retrieve |
| end | ISO 8601 date | the open time for the latest events to retrieve |
| project | string | (optional) only get events for a particular project |
Get Active Events
Example Request
curl "https://api.bluematador.com/ma/api/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/events/active"
Example Response
[
{
// id of the event
"id": "b97da6af-1f87-4cd1-992f-113a60be9358",
// id of the account
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
// event opened date
"opened": "2019-03-22T15:07:08Z",
// event close date (optional)
“closed”: null,
// enum of the type of event
"eventType": "route53_zone_ns",
// display string for type of event
"typeText": "Route53 Zone NS Records",
// display string for event summary
"summaryText": "The configured NS records for the zone does not match the actual query response",
// list of additional details about the event
"detailTexts": [
"ns-1408.awsdns-60.org.",
"ns-1781.awsdns-18.co.uk.",
"ns-31.awsdns-04.com.",
"ns-792.awsdns-26.net."
],
// anomaly, warning, alert
"severity": "anomaly",
// details about the resource affected by the event
"source": {
// identification data about the resource
"ref": {
"arn": "arn:aws:route53:::hostedzone/Z132S03H3a5QD",
"refType": "aws_arn"
}",
// a label describing the type of resource
"label": "Route53 Zone",
// a text representation of the resource
"text": "thedevcloud.com.",
// a list of key-value pairs that further identify the resource
"tags": [
{
"key": "AWS Account",
"value": "blue-poc"
},
{
"key": "Public",
"value": "true"
},
{
"key": "Zone ID",
"value": "Z132S03H3a5QD"
}
]
},
// links to event troubleshooting, AWS, and incident management
"links": [
{
"linkType": "troubleshooting",
"text": "Troubleshooting",
"url": "https://app.bluematador.com/ur/troubleshooting/route53-hosted-zone#ns",
"created": "2019-03-22T17:11:08.092Z"
},
{
"linkType": "aws",
"text": "AWS Console",
"url": "https://app.bluematador.com/ur/awsLink?url=https%3A%2F%2Fconsole.aws.amazon.com%2Froute53%2Fhome%23resource-record-sets%3AZ152S03H3I5QD",
"created": "2019-03-22T17:11:08.092Z"
}
],
// a list of projects the event belongs to
"projects": [
{
"id": "6f0ac475-4594-4b86-87d7-7f8b0645126a",
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"created": "2019-02-19T17:41:05Z",
"name": "Sandbox"
}
],
// whether the event was not sent to notification systems
"muted": false,
// whether the event should be hidden
"hidden": false
},
…
]
This endpoint retrieves Blue Matador events from an account that are currently active
HTTP Request
GET https://api.bluematador.com/ma/api/accounts/<account_id>/events/active
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account to get events from |
Query Parameters
| Name | Type | Description |
|---|---|---|
| project | string | (optional) only get events for a particular project |
Graphs
Example Request
curl "https://api.bluematador.com/ma/api/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/counts"
Example Response
{
// an object containing anomaly, warning, alert objects containing
// the number of events in that severity opened that day
"opened": {
"warning": {
"2019-03-01T00:00:00Z": 35,
"2019-03-13T00:00:00Z": 43,
"2019-03-06T00:00:00Z": 28,
...
},
"anomaly": {
"2019-03-01T00:00:00Z": 52,
"2019-03-13T00:00:00Z": 45,
"2019-03-06T00:00:00Z": 33,
...
},
"alert": {
"2019-03-01T00:00:00Z": 0,
"2019-03-13T00:00:00Z": 1,
"2019-03-06T00:00:00Z": 0,
...
}
},
// an object containing anomaly, warning, alert objects containing
// the number of events in that severity active that day
"active": {
"warning": {
"2019-03-01T00:00:00Z": 45,
"2019-03-13T00:00:00Z": 51,
"2019-03-06T00:00:00Z": 35,
...
},
"anomaly": {
"2019-03-01T00:00:00Z": 59,
"2019-03-13T00:00:00Z": 52,
"2019-03-06T00:00:00Z": 41,
...
},
"alert": {
"2019-03-01T00:00:00Z": 12,
"2019-03-13T00:00:00Z": 13,
"2019-03-06T00:00:00Z": 12,
...
}
}
}
The Graphs API endpoint returns the counts of events opened and active for each day in the last 30 days for an account.
HTTP Request
GET https://api.bluematador.com/ma/api/accounts/<account_id>/counts
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account to get counts from |
Query Parameters
| Name | Type | Description |
|---|---|---|
| project | string | (optional) only get counts for a particular project |
Integrations
The Integrations API allows you to interact with integrations. Integrations are the sources of data monitored by Blue Matador.
List Integrations
List Integrations Example
curl https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/inbounds
Example Response
[
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "d37da6af-1f87-4cd1-992f-113a60be9358",
"inboundType": "aws",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "Prod AWS",
"accountId": "50484629850", // AWS account ID
"keyType": "aws",
// non-sensitive key parts only
"keys": {
"accessKeyId": "AKIAU6EBUO39S2JQAB03"
},
"status": {
"lastSuccess": "2019-03-23T09:01:01Z",
"lastError": null,
"recentErrors": []
},
}
},
...
]
Lists all integrations for an account.

HTTP Request
POST https://api.bluematador.com/zi/accounts/<account_id>/inbounds/aws
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account to create an integration for |
Request Body
The AWS integration can authenticate with either IAM users or IAM roles, and the shape of your request payload determines which type of authentication will be used.
IAM User Authentication
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the new integration |
| accessKeyId | string | the Access Key ID of the IAM user to authenticate as |
| secretAccessKey | string | the secret for the access key |
IAM Role Assumption
| Name | Type | Descirption |
|---|---|---|
| name | string | a name used to identify the new integration |
| roleArn | string | the ARN for the IAM role to assume |
| externalId | string | a string used as the external ID when assuming the role |
When using IAM Role authentication, the role must be set up to allow Blue Matador's AWS account as a trusted identity so that Blue Matador can use AssumeRole. Blue Matador's AWS Account ID is:<PHONE_NUMBER>77
Update AWS Integration
Update AWS Integration Example
curl -X PUT -H "Content-Type: application/json" \
-d '{
"name": "Prod AWS",
"accessKeyId": "AKIAU5EBCO39SDJQAB01",
"secretAccessKey": "1x4xCm4ioTc0f3ylhGZtSSBp4P2M1npcNlV2Uoec"
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/inbounds/aws/d37da6af-1f87-4cd1-992f-113a60be9358"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "d37da6af-1f87-4cd1-992f-113a60be9358",
"inboundType": "aws",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "Prod AWS",
"accountId": "10384429840", // AWS account ID
"keyType": "aws",
// non-sensitive key parts only
"keys": {
"accessKeyId": "AKIAU5EBCO39SDJQAB01"
},
"status": {
"lastSuccess": "2019-03-23T09:01:01Z",
"lastError": null,
"recentErrors": []
},
}
}
This endpoint updates an existing AWS integration.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/inbounds/aws/<id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the integration |
| id | UUID | the id of the integration to update |
Request Body
The AWS integration can authenticate with either IAM users or IAM roles, and the shape of your request payload determines which type of authentication will be used.
IAM User Authentication
If you are only updating the name of the integration, you can omit credentials.
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the new integration |
| accessKeyId | string | (optional) the Access Key ID of the IAM user to authenticate as |
| secretAccessKey | string | (optional) the secret for the access key |
IAM Role Assumption
If you are only updating the name of the integration, you can omit credentials.
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the new integration |
| roleArn | string | (optional) the ARN for the IAM role to assume |
| externalId | string | (optional) a string used as the external ID when assuming the role |
Create Azure Integration
Create Azure Integration Example
curl -X POST -H "Content-Type: application/json" \
-d '{
"name": "Prod Azure Subscription",
"subscriptionId": "c37da5a1-bf17-9cd0-092e-b13360be9355",
"tenantId": "6678a6aa-cf84-6c11-d95f-517a60be0351",
"applicationId": "16b8a699-468c-cc44-195d-a12a628e8352",
"secret": "-5eF10S0Cu7[h?AAa4nscA?19?5c+2.Zs"
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/inbounds/azure"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "d37da6af-1f87-4cd1-992f-113a60be9358",
"inboundType": "azure",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "Prod Azure Subscription",
"subscriptionId": "c37da5a1-bf17-9cd0-092e-b13360be9355",
"tenantId": "6678a6aa-cf84-6c11-d95f-517a60be0351",
// non-sensitive key parts only
"keys": {
"applicationId": "16b8a699-468c-cc44-195d-a12a628e8352"
},
"status": {
"lastSuccess": null,
"lastError": null,
"recentErrors": []
},
}
}
This endpoint creates a new Azure integration. Authentication for the Azure is handled through app registrations in active directory.
HTTP Request
POST https://api.bluematador.com/zi/accounts/<account_id>/inbounds/azure
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account to create an integration for |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the new integration |
| subscriptionId | uuid | the ID of the subscription to be monitored |
| tenantId | uuid | the ID of the active directory containing the Blue Matador app registration |
| applicationId | uuid | the ID of the app registration |
| secret | string | the client secret |
Update Azure Integration
Update Azure Integration Example
curl -X PUT -H "Content-Type: application/json" \
-d '{
"name": "Prod Azure Subscription",
"subscriptionId": "c37da5a1-bf17-9cd0-092e-b13360be9355",
"tenantId": "6678a6aa-cf84-6c11-d95f-517a60be0351",
"applicationId": "16b8a699-468c-cc44-195d-a12a628e8352",
"secret": "-5eF10S0Cu7[h?AAa4nscA?19?5c+2.Zs"
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/inbounds/azure/d37da6af-1f87-4cd1-992f-113a60be9358"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "d37da6af-1f87-4cd1-992f-113a60be9358",
"inboundType": "azure",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "Prod Azure Subscription",
"subscriptionId": "c37da5a1-bf17-9cd0-092e-b13360be9355",
"tenantId": "6678a6aa-cf84-6c11-d95f-517a60be0351",
// non-sensitive key parts only
"keys": {
"applicationId": "16b8a699-468c-cc44-195d-a12a628e8352"
},
"status": {
"lastSuccess": null,
"lastError": null,
"recentErrors": []
},
}
}
This endpoint updates an existing Azure integration.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/inbounds/azure/<id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the integration |
| id | UUID | the id of the integration to update |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the new integration |
| subscriptionId | uuid | (optional) the ID of the subscription to be monitored |
| tenantId | uuid | (optional) the ID of the active directory containing the Blue Matador app registration |
| applicationId | uuid | (optional) the ID of the app registration |
| secret | string | (optional) the client secret |
Disable an Integration
Disable Integration Example
curl -X PUT "https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/inbounds/d37da6af-1f87-4cd1-992f-113a60be9358/disable"
The endpoint returns 200 OK when successful
This endpoint allows you to disable an integration. Disabled integrations are not monitored by Blue Matador.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/inbounds/<id>/disable
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the integration |
| id | UUID | the id of the integration to disable |
Enable an Integration
Enable Integration Example
curl -X PUT "https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/inbounds/d37da6af-1f87-4cd1-992f-113a60be9358/disable"
The endpoint returns 200 OK when successful
This endpoint allows you to re-enable an integration.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/inbounds/<id>/enable
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the integration |
| id | UUID | the id of the integration to enable |
Delete an Integration
Delete Integration Example
curl -X DELETE "https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/inbounds/d37da6af-1f87-4cd1-992f-113a60be9358"
The endpoint returns 200 OK when successful
This endpoint allows you to delete an integration.
HTTP Request
DELETE https://api.bluematador.com/zi/accounts/<account_id>/inbounds/<id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the integration |
| id | UUID | the id of the integration to delete |
Notifications
The Notifications API allows you to interact with notification methods. Events detected by Blue Matador are sent through these notification methods.
List Notifications
List Notification Example
curl https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds
Example Response
[
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "086e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"status": {
"lastSuccess": "2019-03-23T09:01:01Z",
"lastError": null,
"recentErrors": []
},
"severities": {
"all": [
"warning",
"alert"
],
"3833aa2a-de1c-4b48-8722-4ec79fb6c2e4": [
"warning"
]
},
"email"<EMAIL_ADDRESS>},
"credentials": null,
"outboundType": "email"
},
...
]
Lists all notifications for an account. Notification objects differ based on their type.
HTTP Request
GET https://api.bluematador.com/zi/accounts/<account_id>/outbounds
Create an Email Notification
Create Email Notification Example
curl -X POST -H "Content-Type: application/json" \
-d '{
"email"<EMAIL_ADDRESS>"severities": {
"all": ["alert", "warning"],
}
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/email"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "686e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"status": {
"lastSuccess": null,
"lastError": null,
"recentErrors": []
},
"severities": {
"all": [
"warning",
"alert"
],
},
"email"<EMAIL_ADDRESS>},
"credentials": null,
"outboundType": "email"
}
This endpoint creates a new email notification.
HTTP Request
POST https://api.bluematador.com/zi/accounts/<account_id>/outbounds/email
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account to create a notification for |
Request Body
| Name | Type | Description |
|---|---|---|
| string | the email address to send notifications to | |
| severities | Object | a map of project to an array of the event types to notify on (read more) |
Update an Email Notification
Update Email Notification Example
curl -X PUT -H "Content-Type: application/json" \
-d '{
"email"<EMAIL_ADDRESS>"severities": {
"all": ["alert", "warning"],
}
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/email/686e5a82-3116-4257-8f6b-260ec3fef2cd"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "686e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"status": {
"lastSuccess": "2019-03-23T09:01:01Z",
"lastError": null,
"recentErrors": []
},
"severities": {
"all": [
"warning",
"alert"
],
},
"email"<EMAIL_ADDRESS>},
"credentials": null,
"outboundType": "email"
}
This endpoint updates an existing email notification.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/outbounds/email/<id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the notification |
| id | UUID | the ID of the notification to update |
Request Body
| Name | Type | Description |
|---|---|---|
| string | the email address to send notifications to | |
| severities | Object | a map of project to an array of the event types to notify on (read more) |
Create a PagerDuty Notification
Create PagerDuty Notification Example
curl -X POST -H "Content-Type: application/json" \
-d '{
"name": "Prod PagerDuty",
"severities": {
"all": ["alert", "warning"],
},
"account": "example-pagerduty",
"serviceName": "example Blue Matador",
"serviceKey": "445cce5a3ad04113b4eb810c1b8cfd03"
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/pagerduty"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "686e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "Prod Pagerduty",
"status": {
"lastSuccess": null,
"lastError": null,
"recentErrors": []
},
"severities": {
"all": [
"warning",
"alert"
],
},
"account": "example-pagerduty",
"serviceName": "example Blue Matador"
},
"credentials": "<secret>",
"outboundType": "pagerduty"
}
This endpoint creates a new PagerDuty notification.
HTTP Request
POST https://api.bluematador.com/zi/accounts/<account_id>/outbounds/pagerduty
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account to create a notification for |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the new notification |
| severities | Object | a map of project to an array of the event types to notify on (read more) |
| account | string | the name of the PagerDuty account to notify |
| serviceName | string | the name of the PagerDuty service to notify |
| serviceSecret | string | the API key for the service |
Update a PagerDuty Notification
Update PagerDuty Notification Example
curl -X PUT -H "Content-Type: application/json" \
-d '{
"name": "Prod PagerDuty",
"severities": {
"all": ["alert", "warning"],
},
"account": "example-pagerduty",
"serviceName": "example Blue Matador"
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/pagerduty/686e5a82-3116-4257-8f6b-260ec3fef2cd"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "686e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "Prod Pagerduty",
"status": {
"lastSuccess": "2019-03-23T09:01:01Z",
"lastError": null,
"recentErrors": []
},
"severities": {
"all": [
"warning",
"alert"
],
},
"account": "example-pagerduty",
"serviceName": "example Blue Matador"
},
"credentials": "<secret>",
"outboundType": "pagerduty"
}
This endpoint updates an existing PagerDuty notification.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/outbounds/pagerduty/<id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the notification |
| id | UUID | the ID of the notification to update |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the notification |
| severities | Object | a map of project to an array of the event types to notify on (read more) |
| account | string | the name of the PagerDuty account to notify |
| serviceName | string | the name of the PagerDuty service to notify |
| serviceSecret | string | (optional) the API key for the service |
Create an Opsgenie Notification
Create Opsgenie Notification Example
curl -X POST -H "Content-Type: application/json" \
-d '{
"name": "Prod Opsgenie",
"severities": {
"all": ["alert", "warning"],
},
apikey: "a9e34f4c-c341-1546-b5ea-af1a33aeacf7"
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/opsgenie"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "686e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "OpsGenie Prod",
"status": {
"lastSuccess": null,
"lastError": null,
"recentErrors": []
},
"severities": {
"all": []
}
},
"credentials": "<secret>",
"outboundType": "opsgenie"
}
This endpoint creates a new Opsgenie notification.
HTTP Request
POST https://api.bluematador.com/zi/accounts/<account_id>/outbounds/opsgenie
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account to create a notification for |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the new notification |
| severities | Object | a map of project to an array of the event types to notify on (read more) |
| apikey | string | the apikey from the Opsgenie integration to use |
Update an Opsgenie Notification
Update Opsgenie Notification Example
curl -X PUT -H "Content-Type: application/json" \
-d '{
"name": "Prod Opsgenie",
"severities": {
"all": ["alert", "warning"],
}
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/opsgenie/686e5a82-3116-4257-8f6b-260ec3fef2cd"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "686e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "OpsGenie Prod",
"status": {
"lastSuccess": "2019-03-23T09:01:01Z",
"lastError": null,
"recentErrors": []
},
"severities": {
"all": []
}
},
"credentials": "<secret>",
"outboundType": "opsgenie"
}
This endpoint updates an existing Opsgenie notification.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/outbounds/opsgenie/<id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the notification |
| id | UUID | the ID of the notification to update |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the notification |
| severities | Object | a map of project to an array of the event types to notify on (read more) |
| apikey | string | (optional) the apikey from the Opsgenie integration to use |
Create an SNS Notification
Create SNS Notification Example
curl -X POST -H "Content-Type: application/json" \
-d '{
"name": "Prod SNS",
"severities": {
"all": ["alert", "warning"],
},
"topicArn": "arn:aws:sns:us-east-1:536714378879:oncall",
"accessKeyId": "AKIAU6EBUO39S2JQAB03",
"secretAccessKey": "Zx4xOm4ioTc0f3ylhGZkSSBp4P2M1KpcNlV2Uoe1",
"sendResolve": true,
"sendJson": true"
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/sns"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "686e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "Prod SNS",
"status": {
"lastSuccess": null,
"lastError": null,
"recentErrors": []
},
"severities": {
"all": [
"alert",
"warning"
]
},
"topicArn": "arn:aws:sns:us-east-1:536714378879:oncall",
"accessKeyId": "AKIAU6EBUO39S2JQAB03"
},
"credentials": "<secret>",
"outboundType": "sns"
}
This endpoint creates a new SNS notification.
HTTP Request
POST https://api.bluematador.com/zi/accounts/<account_id>/outbounds/sns
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account to create a notification for |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the new notification |
| severities | Object | a map of project to an array of the event types to notify on (read more) |
| topicArn | string | the ARN of the SNS topic to send notifications to |
| accessKeyId | string | the Access Key ID of the IAM user to authenticate as |
| secretAccessKey | string | the secret for the access key |
| sendResolve | bool | true if should send resolve notifications or not |
| sendJson | bool | true if should send notifications as JSON |
Update an SNS Notification
Update SNS Notification Example
curl -X PUT -H "Content-Type: application/json" \
-d '{
"name": "Prod SNS",
"severities": {
"all": ["alert", "warning"],
},
"topicArn": "arn:aws:sns:us-east-1:536714378879:oncall",
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/sns/686e5a82-3116-4257-8f6b-260ec3fef2cd"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "686e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "Prod SNS",
"status": {
"lastSuccess": "2019-03-23T09:01:01Z",
"lastError": null,
"recentErrors": []
},
"severities": {
"all": [
"alert",
"warning"
]
},
"topicArn": "arn:aws:sns:us-east-1:536714378879:oncall",
"accessKeyId": "AKIAU6EBUO39S2JQAB03"
},
"credentials": "<secret>",
"outboundType": "sns"
}
This endpoint updates an existing SNS notification.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/outbounds/sns/<id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the notification |
| id | UUID | the ID of the notification to update |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the notification |
| severities | Object | a map of project to an array of the event types to notify on (read more) |
| topicArn | string | the ARN of the SNS topic to send notifications to |
| accessKeyId | string | (optional) the Access Key ID of the IAM user to authenticate as |
| secretAccessKey | string | (optional) the secret for the access key |
Create a VictorOps Notification
Create VictorOps Notification Example
curl -X POST -H "Content-Type: application/json" \
-d '{
"name": "Prod VictorOps",
"severities": {
"all": ["alert", "warning"],
},
"integrationId": "29a7c0dd-8487-4248-9193-419fc43f03f8",
"routingKey": "ops",
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/victorops"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "686e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "Prod VictorOps",
"status": {
"lastSuccess": null,
"lastError": null,
"recentErrors": []
},
"severities": {
"all": [
"alert",
"warning"
]
}
},
"credentials": "<secret>",
"outboundType": "victorops"
}
This endpoint creates a new VictorOps notification.
HTTP Request
POST https://api.bluematador.com/zi/accounts/<account_id>/outbounds/victorops
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account to create a notification for |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the new notification |
| severities | Object | a map of project to an array of the event types to notify on (read more) |
| integrationId | string | the ID of the VictorOps integration to send notifications to |
| routingKey | string | the routing key VictorOps should use |
Update a VictorOps Notification
Update VictorOps Notification Example
curl -X PUT -H "Content-Type: application/json" \
-d '{
"name": "Prod VictorOps",
"severities": {
"all": ["alert", "warning"],
},
}' \
"https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/victorops/686e5a82-3116-4257-8f6b-260ec3fef2cd"
Example Response
{
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"id": "686e5a82-3116-4257-8f6b-260ec3fef2cd",
"created": "2019-03-22T15:07:08Z",
"enabled": true,
"data": {
"name": "Prod VictorOps",
"status": {
"lastSuccess": "2019-03-23T09:01:01Z",
"lastError": null,
"recentErrors": []
},
"severities": {
"all": [
"alert",
"warning"
]
}
},
"credentials": "<secret>",
"outboundType": "victorops"
}
This endpoint updates an existing VictorOps notification.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/outbounds/victorops/<id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the notification |
| id | UUID | the ID of the notification to update |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | a name used to identify the notification |
| severities | Object | a map of project to an array of the event types to notify on (read more) |
| integrationId | string | (optional) the ID of the VictorOps integration to send notifications to |
| routingKey | string | (optional) the routing key VictorOps should use |
Severities
{
"all": ["alert"],
"f651a7c4-9d49-4f23-8495-56d8a1d5e97c": ["alert", "warning", "anomaly"]
}
The severities map used when creating notifications allows you to control what types of events are sent to your notification methods. Blue Matador defines three levels of severity, Alert, Warning, and Anomaly. If you have set up projects, you can choose which severities you want on a project basis by providing the ID of your project mapped to the severities you'd like sent. For example, the following JSON:
Would result in all events from resources belonging to the project with the ID f651a7c4-9d49-4f23-8495-56d8a1d5e97c
being sent to your notification method. All alerts would also be sent to the notification.
If you haven't set up projects, your object will only have the all
key.
Disable a Notification
Disable Notification Example
curl -X PUT "https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/086e5a82-3116-4257-8f6b-260ec3fef2cd/disable"
The endpoint returns 200 OK when successful
This endpoint allows you to disable a notification. Disabled notifications will not be used by Blue Matador.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/outbounds/<id>/disable
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the notification |
| id | UUID | the id of the notification to disable |
Enable a Notification
Enable Notification Example
curl -X PUT "https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/086e5a82-3116-4257-8f6b-260ec3fef2cd/disable"
The endpoint returns 200 OK when successful
This endpoint allows you to re-enable a notification.
HTTP Request
PUT https://api.bluematador.com/zi/accounts/<account_id>/outbounds/<id>/enable
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the notification |
| id | UUID | the id of the notification to enable |
Delete a Notification
Delete Notification Example
curl -X DELETE "https://api.bluematador.com/zi/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351/outbounds/086e5a82-3116-4257-8f6b-260ec3fef2cd"
The endpoint returns 200 OK when successful
This endpoint allows you to delete a notification.
HTTP Request
DELETE https://api.bluematador.com/zi/accounts/<account_id>/outbounds/<id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| account_id | UUID | the ID of the account that owns the notification |
| id | UUID | the id of the notification to delete |
Organizations
Organizations are a way of managing multiple Blue Matador accounts which each have their own integrations, notification methods, and events. When organizations is enabled, user permissions are managed for all accounts in the organization with a shared set of users.
Authentication
An example of authenticating with Blue Matador
curl "organization_api_endpoint_here"
-H "Authorization: rha7sn5brxab4kh6a7hbe62q3jq1dpee7khpabcd"
Make sure to replace
rha7sn5brxab4kh6a7hbe62q3jq1dpee7khpabcd
with your organization key
All organization endpoints are authenticated using an Organization Key instead of an account API key. Simply pass the organization key in the Authorization header as shown:
List Accounts
List Accounts Example
curl https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/accounts
Example Response: 200 OK
[
{
// The ID of this account
"id": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"created": "2019-01-01T00:00:00Z",
"data": {
"stripeId": null,
// The name given to this account
"company": "Subsidiary 1",
"disabled": false,
"paid": false,
"trialEnd": "2019-01-15T00:00:00Z",
"assessment": null,
"trialWalled": false,
"projectSettings": {
"enabled": false
}
},
// The ID of the organization this account belongs to
"organizationId": "40b59978-7e87-4129-aceb-cf9a98c36c62",
// Extra data about the organization this account belongs to
"organizationData": {
"name": "Example Co.",
"disabled": false,
"stripeId": null,
"paid": false,
"trialEnd": "2019-01-15T00:00:00Z",
"projectSettings": {
"enabled": false
}
}
},
...
]
Lists all accounts that belong to an organization
HTTP Request
GET https://api.bluematador.com/zi/organizations/<organization_id>/accounts
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
Create Account
Create Account Example
curl -X POST -H "Content-Type: application/json" \
-d '{"name": "Subsidiary 1"}' \
"https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/accounts"
Example Response: 200 OK
{
// The newly created account object
"account": {
// The ID of this account
"id": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"created": "2019-01-01T00:00:00Z",
"data": {
"stripeId": null,
// The name given to this account
"company": "Subsidiary 1",
"disabled": false,
"paid": false,
"trialEnd": "2019-01-15T00:00:00Z",
"assessment": null,
"trialWalled": false,
"projectSettings": {
"enabled": false
}
},
// The ID of the organization this account belongs to
"organizationId": "40b59978-7e87-4129-aceb-cf9a98c36c62",
// Extra data about the organization this account belongs to
"organizationData": {
"name": "Example Co.",
"disabled": false,
"stripeId": null,
"paid": false,
"trialEnd": "2019-01-15T00:00:00Z",
"projectSettings": {
"enabled": false
}
}
},
// The automatically created default API key for the account, so you can begin immediately calling the account-specific APIs
"defaultApiKey": "D6bSkilgbSVm8djsMcMkrcD4QbCJ0n35"
}
Creates a new account for the organization.
HTTP Request
POST https://api.bluematador.com/zi/organizations/<organization_id>/accounts
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | the display name for the account, will populate the company field in the account data |
Rename Account
Rename Account Example
curl -X POST -H "Content-Type: application/json" \
-d '{"name": "Subsidiary 1"}' \
"https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/accounts/be9bba82-c394-431e-8d77-77cb242b138b/name"
Example Response: 200 OK
Renames an account in the organization.
HTTP Request
PUT https://api.bluematador.com/zi/organizations/<organization_id>/accounts/<account_id>/name
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
| account_id | UUID | the ID of the account to rename |
Request Body
| Name | Type | Description |
|---|---|---|
| name | string | the display name for the account, will populate the company field in the account data |
Delete Account
Delete Account Example
curl -X DELETE \
"https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/accounts/be9bba82-c394-431e-8d77-77cb242b138b"
Example Response: 200 OK
Deletes an account
HTTP Request
DELETE https://api.bluematador.com/zi/organizations/<organization_id>/accounts/<account_id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
| account_id | UUID | the ID of the account |
List Users
List Users Example
curl https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/users
Example Response: 200 OK
[
{
// The ID of the user
"id": "dd0a2a8b-62f2-48b5-8039-75552ff0a477",
"firstName": "John",
"lastName": "Smith",
"email"<EMAIL_ADDRESS>"created": "2019-01-01T00:00:00Z",
// The last time the user has logged in to Blue Matador
"lastLogin": "2019-01-01T00:00:00Z",
"deleted": null,
"data": {
"systemPermissions": [],
"digestFrequency": "weekly",
"lastDigest": null
},
"needsTour": true
}
]
Lists all users that belong to an organization. The response from this endpoint includes only basic user information and does not show the user's permissions with any accounts or organization. To retrieve those details, use the Get User endpoint.
HTTP Request
GET https://api.bluematador.com/zi/organizations/<organization_id>/users
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
Invite Users
Invite Users Example
curl -X POST -H "Content-Type: application/json" \
-d '[{
"email"<EMAIL_ADDRESS>"data": {
"permissions": ["user"],
"autoProvision": true,
"autoProvisionPermissions": ["user"]
}
}]' \
"https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/users"
Example Response: 200 OK
(no body)
Example Response: 409 Conflict
{
"error": "a user with this email already exists"
}
Sends an invitation to a user to join your organization. The user must then check their email and accept the invitation through the link in their email, which leads them through the process of setting up their name and password. Invitations cannot be accepted programmatically on behalf of a user.
HTTP Request
POST https://api.bluematador.com/zi/organizations/<organization_id>/users
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
Request Body
| Name | Type | Description |
|---|---|---|
| string | the user's email address | |
| data | object | the user organization settings as described below |
User Organization Settings
| Name | Type | Description |
|---|---|---|
| permissions | list | a list of user organization permissions: user and/or admin |
| autoProvision | boolean | if set to true, the user will be provisioned onto all existing and future accounts in the organization |
| autoProvisionPermissions | list | a list of user account permissions: user and/or admin that the user is provisioned with when autoProvision is true |
Get User
Get User Example
curl https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/users/dd0a2a8b-62f2-48b5-8039-75552ff0a477
Example Response: 200 OK
[
{
// Basic user information
"user": {
// The ID of the user
"id": "dd0a2a8b-62f2-48b5-8039-75552ff0a477",
"firstName": "John",
"lastName": "Smith",
"email"<EMAIL_ADDRESS>"created": "2019-01-01T00:00:00Z",
// The last time the user has logged in to Blue Matador
"lastLogin": "2019-01-01T00:00:00Z",
"deleted": null,
"data": {
"systemPermissions": [],
"digestFrequency": "weekly",
"lastDigest": null
},
"needsTour": true
},
// An object describing this user's permissions and settings in the organization
"userOrganization": {
"userId": "dd0a2a8b-62f2-48b5-8039-75552ff0a477",
"organizationId": "40b59978-7e87-4129-aceb-cf9a98c36c62",
"data": {
// Permissions the user has with the organization
"permissions": [
"user",
"admin"
],
// If true, the user is automatically provisioned onto new organization accounts
"autoProvision": true,
// If autoProvision is set, which permissions the user will have on new accounts
"autoProvisionPermissions": [
"user"
]
},
"created": "2019-01-01T00:00:00Z"
},
// An array of objects describing the user's permissions on each account they have permissions on
"userAccounts": [
{
"userId": "dd0a2a8b-62f2-48b5-8039-75552ff0a477",
"accountId": "a976a6af-cf87-4dd1-942f-b13a30be9351",
"data": {
// If true, this relationship was created as a result of auto provisioning
"autoProvisioned": false,
// The current permissions the user has on this account
"permissions": [
"user",
"admin"
]
},
// The last time the user logged in to this account
"lastLogin": null,
"created": "2019-01-01T00:00:00Z"
}
]
}
]
Example Response: 404 Not Found
(no body)
Gets a user that belongs to an organization, that user's organization configuration, and their account configurations.
HTTP Request
GET https://api.bluematador.com/zi/organizations/<organization_id>/users/<user_id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
| user_id | UUID | the ID of the user |
Update User
Update User Example
curl -X PUT -H "Content-Type: application/json" \
-d '{
"permissions": ["user"],
"autoProvision": true,
"autoProvisionPermissions": ["user"]
}' \
"https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/users/dd0a2a8b-62f2-48b5-8039-75552ff0a477"
Example Response: 200 OK
(no body)
Updates a user's organization permissions.
HTTP Request
PUT https://api.bluematador.com/zi/organizations/<organization_id>/users/<user_id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
| user_id | UUID | the ID of the user |
Request Body
| Name | Type | Description |
|---|---|---|
| permissions | list | a list of user organization permissions: user and/or admin |
| autoProvision | boolean | if set to true, the user will be provisioned onto all existing and future accounts in the organization |
| autoProvisionPermissions | list | a list of user account permissions: user and/or admin that the user is provisioned with when autoProvision is true |
Delete User
Delete User Example
curl -X DELETE "https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/users/dd0a2a8b-62f2-48b5-8039-75552ff0a477"
Example Response: 200 OK
(no body)
Deletes a user from your organization. The user will also be deleted from all accounts in your organization that they had access to.
HTTP Request
DELETE https://api.bluematador.com/zi/organizations/<organization_id>/users/<user_id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
| user_id | UUID | the ID of the user |
Set User Account
Set User Account Example
curl -X PUT -H "Content-Type: application/json" \
-d '{
"permissions": ["user", "admin"]
}' \
"https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/users/dd0a2a8b-62f2-48b5-8039-75552ff0a477/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351"
Example Response: 200 OK
(no body)
Sets a user's permissions with a specific account in your organization. To remove a user's access to an account in your organization, use the Delete User Account API.
HTTP Request
PUT https://api.bluematador.com/zi/organizations/<organization_id>/users/<user_id>/accounts/<account_id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
| user_id | UUID | the ID of the user |
| account_id | UUID | the ID of the account |
Request Body
| Name | Type | Description |
|---|---|---|
| permissions | list | a list of user account permissions: user and/or admin |
Delete User Account
Delete User Account Example
curl -X DELETE "https://api.bluematador.com/zi/organizations/40b59978-7e87-4129-aceb-cf9a98c36c62/users/dd0a2a8b-62f2-48b5-8039-75552ff0a477/accounts/a976a6af-cf87-4dd1-942f-b13a30be9351"
Example Response: 200 OK
(no body)
Deletes a user's permissions with an account, completely removing all access to the account.
HTTP Request
DELETE https://api.bluematador.com/zi/organizations/<organization_id>/users/<user_id>/accounts/<account_id>
Path Parameters
| Name | Type | Description |
|---|---|---|
| organization_id | UUID | the ID of your organization |
| user_id | UUID | the ID of the user |
| account_id | UUID | the ID of the account |


技术不止于工作
Lorem Ipsum is simply dummy text of the printing and typesetting
Lorem Ipsum is simply dummy text of the printing and typesetting
Lorem Ipsum is simply dummy text of the printing and typesetting
Lorem Ipsum is simply dummy text of the printing and typesetting
Lorem Ipsum is simply dummy text of the printing and typesetting
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ultricies vestibulum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. of Quisque ultricies vestibulum molestie. Graphic Design the power of Suspendisse ultricies Graphic Design the power of Suspendisse potenti
Lorem ipsum dolor sit amet, consectetur adipiscing elit. of Quisque ultricies vestibulum molestie. Graphic Design the power of Suspendisse ultricies Graphic Design the power of Suspendisse potenti
Lorem ipsum dolor sit amet, consectetur adipiscing elit. of Quisque ultricies vestibulum molestie. Graphic Design the power of Suspendisse ultricies Graphic Design the power of Suspendisse potenti
Lorem ipsum dolor sit amet, consectetur adipiscing elit. of Quisque ultricies vestibulum molestie. Graphic Design the power of Suspendisse ultricies Graphic Design the power of Suspendisse potenti
projects
total employees
our offices
clients
Lorem Ipsum is simply dummy text of the printing and typesetting
Lorem Ipsum is simply dummy text of the printing and typesetting
Lorem Ipsum is simply dummy text of the printing and typesetting
Lorem Ipsum is simply dummy text of the printing and typesetting
Lorem Ipsum is simply dummy text of the printing and typesetting by the readable content of a page when looking at its layout and calling you back. They are very responsive.
read moreLorem Ipsum is simply dummy text of the printing and typesetting by the readable content of a page when looking at its layout and calling you back. They are very responsive.
read moreLorem Ipsum is simply dummy text of the printing and typesetting by the readable content of a page when looking at its layout and calling you back. They are very responsive.
read moreLorem Ipsum is simply dummy text of the printing and typesetting
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since
publishing software like Aldus of Lorem Ipsum.


?O
%
cm
7
8
9
10
The
New
York
copyright
reserved
Botanical
Garden
ˆ
A
New
York
Botanical
Garden
PLANTS
OF
JAMAICA
COLLECTED
FOR
THE
HERBARIUM
OF
DUKE
UNIVERSITY
Andira
inermis
(Wright)
H.B.K.
det.
R.
L.
Wilbur
1966
Parish
of
Westmoreland:
Road
to
Content,
south
southwest
of
Darliston.
Second
growth
and
remnant
hilltop
forest.
Alt.
2200-2400
feet.
20
foot
tree
at
roadside,
pink.
Flowers
light
H.
A.
HESPENHEIDE
No.
1514
23
August
1965
with
E.
B.
HESPENHEIDE,
J.
S.
CALVER
and
R.
E.
RICKLEFS
1615812
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Enforces consistent semicolon usage at the end of every statement.
One of the following arguments must be provided:
"always"
enforces semicolons at the end of every statement."never"
disallows semicolons at the end of every statement except for when they are necessary."semicolon": [true, "always"]
"semicolon": [true, "never"]
{
"type": "enum",
"enumValues": [
"always",
"never"
]
}


Glitch is an algorithmic synthesizer. It creates music with math.
Music is a function f(t) where t is increasing in time.
Glitch increases t at 8000/sec rate and it can be a real number if your hardware sample rate is higher. Expression result is expected to be in range [-1..1] otherwise it will be clipped.
To use Bytebeat audio range you can use byte function that expects the input to be in range [0..255] and performs overflow automatically
Example: byte(t*14) - sawtooth wave at 437 Hz.
Music expression is evaluated once for each audio frame. You can use numbers, math operators, variables and functions to compose more complex expressions.
Most of the functions keep track of time internally, so you only have to specify other arguments such as frequency.
Basic: + - * / % (modulo) ** (power)
Bitwise: & | ^ (xor or bitwise not) << >>
Compare: == != < <= > >= (return 1 or 0)
Grouping: ( ) , (separates expressions or function arguments)
Conditional: && || (short-circuit operators)
Assignment: = (left side must be a variable)
Bitwise operators truncate numbers to integer values.
Example: x=6,(y=x+1,x*y) - returns 42
Example: byte(t*5&(t>>7)|t*3&(t*4>>10)) - bytebeat music
l(x): log2(x)
r(n): random number in the range [0..n]
s(i): sine wave in the rage [-1..1] at phase i in range [0..1]
Example: s(t*14/256) - sine wave at 437Hz
Sequencers are used to describe melodies, rhythmic patterns or other parts of your song.
a(i, x0, x1, x2, ...) returns x[i] value for the given i
Example: byte(t*a(t>>11,4,5,6))
seq(bpm, x0, x1, x2, ...) returns x[i] value where i increases at given tempo.
Values can be numeric constants, variables or expressions. Values are evaluated once per beat and the result is cached.
Value can be a pair of numbers like (2,3) then the first number is relative step duration and the second one is actual value. This means value 3 will be returned for 2 beats.
Value can be a group of more than 2 numbers. The the first number is relative step duration, and other values are gradually slided, e.g. (0.5,2,4,2) is a value changed from 2 to 4 back to 2 and the step duration is half of a beat.
Example: byte(t*seq(120,4,5,6))
Example: byte(t*seq(120,(1,4,6,4),(1/2,5),(1/2,6)))
loop(bpm, x0, x1, x2, ...) evaluates x[i] increasing i at given tempo. Unlike seq, loop evaluates x[i] for every audio frame, so other functions can be used as loop values.
seq is often used to change pitch or volume, loop is often used to schedule inner sequences/loops.
Example: byte(t*loop(30,seq(240,4,5),seq(240,4,6)))
seq and loop return NaN at the beginning of each step. NaN value is used by the instruments to detect the start of a new note.
Oscillators are the building blocks of synthesizers. Oscillator phase is managed internally, only frequency must be provided (in Hz).
sin(freq) = sine wave
tri(freq) = triangular wave
saw(freq) = saw-tooth wave
sqr(freq, [pwm=0.5]) = square wave of given pulse width
Example: (sin(220)+tri(440))/2
More advanced instruments:
fm(freq, mf1, ma1, mf2, ma2, mf3, ma3) is a 3-operator FM synthesizer, mf is operator frequency ratio, ma operator amplification. M2 and M1 are parallel, M3 is sequential to M1.
Example: fm(seq(120,440,494),1,0.5,0.01,1)
tr808(instr, volume) is TR808 drum kit. 0 = kick, 1 = snare, 2 = tom, 3 = crash, 4 = rimshot, 5 = clap, 6 = cowbell, 7 = open hat, 8 = closed hat. You may use BD, SD, MT, MA, RS, CP, CB, OH, HH instead.
Example: tr808(SD,seq(240,1,0.2)) plays simple snare rhythm
piano(freq) is a very basic sample-based piano.
Example: piano(hz(seq(240,0,2,4,5,7,5,4,2))) plays major scale notes in a loop
env(z, attack, release, [atkcur=0.5, relcur=atkcur]) wraps signal z with an attack-release envelope with attack and release time in seconds. By default the envelope shape is linear, but changing the values of atkcur and relcur in the range [0..1] results in logarithmic or exponential curves.
Example: env(sin(seq(240,440)), (0.1, 0.3), (0.5, 0.1))
hz(note) returns note frequency
scale(i, [mode=MAJOR]) returns node at position i in the given scale.
Example: tri(hz(scale(seq(480,r(5))))) plays random notes from the major scale
mix(z1, z2, ...) mixes signals together. It is also the only function that does not propagate NaN values.
Example: mix(0.3*sin(440),0.7*tri(220))
each(vars, expr, ...) applies and adds up the same expression for each group of values. Useful to construct chords.
 Variables keep their values between evaluations.
t is time, increased from 0 to infinity by 8000 for each second.
C3, C#3, D3, D#3, E3... are note constants that can be used with hz function.
k0, k1, k2, ..., k9 are MIDI keyboard notes that are currently played. 0=A4.
v0, v1, v2, ..., v9 are MIDI keyboard note velocities.
x and y are current mouse cursor position in the range [0..1]. If MIDI keyboard is used they indicate pitch bend and modulation strengths.
bpm (if set) applies user input on the next beat to keep the tempo.


CTF PacMan Competition
This is an online competition site for the UC Berkeley CS188 Intro to AI course's Capture the Flag Contest, allowing teams and individuals to test their PacMan agents anonymously, without exposing their code.
Please don't abuse this. The site in its current state is unstable, and overloading it with requests or excessive submissions helps no one.
Use this form to submit your own agent to compete against other teams' submissions. Please submit a .py file renamed to your team name. You can reupload your agent multiple times, as long as it has the same team name it will overwrite your previously uploaded version.
Use this form to request a match between two uploaded agents. The request will be put into a queue, and once the match is played out the logs and replays can be downloaded from the Results page.
Number of active match requests: {{ requests }}
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}


pymzn.Solver.solve¶
-
Solver.
solve
(fzn_file, *, all_solutions=False, check_complete=False, **kwargs)¶ Solve a problem encoded in FlatZinc.
This method should call an external solver, wait for the solution and provide the output of the solver. If the solver does not have a Python interface, the
pymzn.bin
module can be used to run external executables.If
support_ozn
isFalse
, the solver should directly provide solutions compliant to the PyMzn solution format. This means that the the implementation of this method should parse the output of the solver and return the solutions as dictionaries of variable assignments (see theeval_dzn
method). In alternative the solutions should be returned in dzn format, so they can be evaluated by theeval_dzn
function.Parameters: - fzn_file (str) – The path to the fzn file to use as input of the solver.
- all_solutions (bool) – Whether the solver should output all the solutions. If
support_all=False
then the implementation should ignore the value of this parameter. - check_complete (bool) – Whether the solver should return a second boolean value indicating if the search was completed successfully.
- **kwargs – Additional arguments for the solver provided through the
pymzn.minizinc
function.
Returns: This method should return a string if the solver supports ozn parsing via
solns2out
. The string simply contains the output of the solver. If the solver does not support the ozn parsing, then it should parse the solvers output by itself and thus return a list of solutions in PyMzn format (dictionaries of variable assignments, as inpymzn.eval_dzn
).In both cases, if
check_complete=True
then the method should return a tuple containing the above output and a second boolean indicating whether the search was completed successfully.Return type: str, list or tuple


Submit an idea
First Name
Last Name
Imprivata Email
Idea Name
Idea Description Summary
Roles Needed(optional)
Submit


Plan your budget with us!
 Don't worry now, we have got your back.Track your expenses now with the help of our budget tracker.
 Don't worry now, we have got your back.Track your expenses now with the help of our budget tracker.


CSE MCQ Question
Get All Sanfoundry Questions in Single page
1000-basic-electrical-engineering-questions-answers/
computer-network-questions-answers/
microprocessors-questions-answers/
1000-data-structure-questions-answers/
1000-microcontroller-questions-answers/
1000-discrete-mathematics-questions-answers/
1000-object-oriented-programming-oops-questions-answers
1000-automata-theory-questions-answers
software-engineering-questions-answers
artificial-intelligence-questions-answers
1000-database-management-system-questions-answers
1000-surveying-questions-answers
object-oriented-system-design
c-interview-questions-answers


Hello, figured I could share my userscript here, even though it's not using BBL.
Screenshot
Description
This is a userscript that allows you to see the approximate time remaining for each destroyed vehicle while playing Battlefield 4 with your battlescreen opened!
Requirements
- Chrome
Tampermonkey:
https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
- Firefox
Greasemonkey:
https://addons.mozilla.org/firefox/addon/greasemonkey/
Installation
Download the userscript here:
https://github.com/Andersso/battlescreen-respawn-timer/raw/master/bs-respawn-timer.user.js
Github:
https://github.com/Andersso/battlescreen-respawn-timer/


It is my protfolio, there are some my web design works and some of my art work
My protfolioI did a redesign for the sushi restaurant, add more funny element in to the page, I did not make it more professional, because the restaurant named Angry fish.
RedesignI did some animation for the art of noise 1913. There are different animation show how different noise work.
AnimationMy long srcoll page is coming.
longscroll


Bootstrap's working
So is
font-awesome. {{pepe}}
Is Angular working?
Partners {{(partners|filter:Name).length}}
{{p.Name}}
{{i.Number}}


sms_launcher :
code that formats an sms message and opens up the "send sms" activity with it
defining:
the exact way in which this can be implemented. DONE. Android doesnt allow menus of apps being changed from the outside. will therefore have to build own contact app first.
the output format of the message
using:
pick_contact_activity :existing activity to pick a contact


Show your bussiness and attract customers.
Find Out MoreFriend Library Advertisement has a entertainment social network. There are so many users who want to find new contents. We can recommend your bussiness to users. Feel free and enjoy our service as users and you can attract users to your bussiness.
Get Started!Show your restraurant.
Show your games. If you show how enjoy your game, users can get along with in your game.
We update dependencies to keep things fresh.
You have to make your websites with love these days!
Ready to start your next project with us? That's great! Give us a call or send us an email and we will get back to you as soon as possible!
+82 10-8835-9229


|
Brooklyn | |||||||
| FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object brooklyn.policy.followthesun.FollowTheSunParameters
public class FollowTheSunParameters
| Field Summary | |
|---|---|
java.util.Set |
excludedLocations
a list of excluded locations |
double |
triggerAbsoluteMajority
as corresponding majority and total fields, with x_A-x_B on the LHS of inequality |
double |
triggerAbsoluteTotal
fields as above, this parameter T defines a number such that x_A > T in order for X to be migrated to A |
double |
triggerDeltaAbovePercentMajority
as corresponding majority and total fields, with x_A-x_B on the LHS of inequality |
double |
triggerDeltaAbovePercentTotal
fields as above, and T as above, this parameter T' defines a number such that x_A > T*x + T' in order for X to be migrated to A |
double |
triggerPercentMajority
fields as above, with X_B the number from a different geography B, where A and B are the two most prolific requesters of X, and X_A >= X_B; this parameter T defines a number such that x_A-x_B > T*x in order for X to be migrated to A |
double |
triggerPercentTotal
trigger for moving segment X from geo A to geo B: where x is total number of requests submitted in X across the CDM network, and x_A is number of reqs from geo A, with A the most prolific geography (arbitrarily chosen in case of ties so recommended to choose at least a small percent_majority or delta_above_percent_majority, in addition to this field); this parameter T defines a number such that x_A > T*x in order for X to be migrated to A (but see also DELTA_ABOVE_PERCENT_TOTAL, below) |
| Method Summary | |
|---|---|
boolean
|
isTriggered(double highest, double total, double nextHighest, double current)
|
static FollowTheSunParameters
|
newDefault()
|
java.lang.String
|
toString()
|
| Methods inherited from class java.lang.Object | |
|---|---|
| java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
| Field Detail |
|---|
public java.util.Set excludedLocations
public double triggerAbsoluteMajority
public double triggerAbsoluteTotal
public double triggerDeltaAbovePercentMajority
public double triggerDeltaAbovePercentTotal
public double triggerPercentMajority
public double triggerPercentTotal
| Method Detail |
|---|
public boolean isTriggered(double highest, double total, double nextHighest, double current)
public static FollowTheSunParameters newDefault()
public java.lang.String toString()
Brooklyn Multi-Cloud Application Management Platform
brooklyncentral.github.com. Apache License. © 2012.


A UI framework for people who already know JavaScript DOM manipulation and event handling. (Try clicking around)


RIT Tutoring Center
Log In
Sign Up
Welcome Back!
RIT User Name
*
Password
*
Login As
Student
Tutor
Forgot Password?
Log In
Sign Up for Tutoring Center
First Name
*
Last Name
*
RIT User Name
*
Set A Password
*
Retype Password
*
Register


#include <state.h>
§ state() [1/2]
§ state() [2/2]
| state::state |
( |
const state & |
state_in | ) |
|
§ ~state()
§ destroy()
§ get_final()
| bool state::get_final |
( |
| ) |
const |
§ get_identifier()
| int state::get_identifier |
( |
| ) |
const |
§ get_initial()
| bool state::get_initial |
( |
| ) |
const |
§ get_next_state()
| int state::get_next_state |
( |
const symbol & |
symbol_in | ) |
const |
§ get_number_transition()
| int state::get_number_transition |
( |
| ) |
const |
§ is_death_state()
| bool state::is_death_state |
( |
| ) |
const |
§ operator<()
| int state::operator< |
( |
const state & |
state_in | ) |
const |
§ operator=()
| state & state::operator= |
( |
const state & |
state_in | ) |
|
§ operator==()
| int state::operator== |
( |
const state & |
state_in | ) |
const |
§ set_final()
| void state::set_final |
( |
bool |
final_in | ) |
|
§ set_identifier()
| void state::set_identifier |
( |
int |
identifier_in | ) |
|
§ set_initial()
| void state::set_initial |
( |
bool |
initial_in | ) |
|
§ set_transition()
| void state::set_transition |
( |
const symbol & |
symbol_in, |
|
|
int |
num_in |
|
) |
| |
§ operator<<
| ostream& operator<< |
( |
ostream & |
output, |
|
|
const state & |
state_ |
|
) |
| |
|
friend |
§ vector_transition
The documentation for this class was generated from the following files:


[1]
fact it is the 3 ''/'' 920,000 pixel screen found on the higher end canon dslrs .
[2]
cnet editor wrote :/: ``/`` it keeps the same large , fixed 3-inch lcd .


Drawing Text
This example will draw arcs, both open and closed
Your browser does not support canvas.


Simple APIs
Web Socket Socket.io Server
Ping the DB
New User Signup & Login
Create a User
Login
Forgot Password
Authenticated User (login first)
Update User
Read a User
Read a list of Users
Send & Read Messages
Administration User
Delete a User
CRUD becomes CURD with this flow.


Our aim is to deliver the product to the customer before the deadline
Our aim is to build the product with pure design principles.
We are here to help you 24/7. We give all the neccessary guidence for handling the product.
TechMinds is the group of freelancers to build the software product.TechMind is founded by two technology Inthusiastic developers.It is founded in the yaer 2018.
Our aim is to build the complete software for our clients.TechMinds is the group of freelancers to build the software product.TechMind is founded by two technology Inthusiastic developers.It is founded in the year 2018.TechMinds is the group of freelancers to build the software product.TechMind is founded by two technology Inthusiastic developers.It is founded in the year 2018.
This is the core team of TechMinds.
(Software Engineer)
(Software Engineer)


{% extends "layout.html" %} {% block body %}
No account yet? Create one here if you have an invitation code


Things I like
-
photography -
games -
music -
science
A fun little { responsive } single pager from a template
You're the greatest thing that has ever been or ever will be. You're special. You're so very special. Even the worst thing we can do here is good. You can't have light without dark. You can't know happiness unless you've known sorrow. I like to beat the brush.
This is gonna be a happy little seascape. This is the way you take out your flustrations. Only God can make a tree - but you can paint one. Now it's beginning to make a little sense.  Use it. Make friends with it. Every time you practice, you learn more.
We don't need any guidelines or formats. All we need to do is just let it flow right out of us. Put your feelings into it, your heart, it's your world. Just think about these things in your mind and drop em' on canvas. I'm sort of a softy, I couldn't shoot Bambi except with a camera. Nature is so fantastic, enjoy it. Let it make you happy.
This present moment is perfect simply due to the fact you're experiencing it. It's beautiful - and we haven't even done anything to it yet. Nature is so fantastic, enjoy it. Let it make you happy. We'll play with clouds today. This is where you take out all your hostilities and frustrations. It's better than kicking the puppy dog around and all that so. The little tiny Tim easels will let you down.
You have to make these big decisions. Be brave. You can create the world you want to see and be a part of. You have that power. There is no right or wrong - as long as it makes you happy and doesn't hurt anyone.
Let's get wild today. The shadows are just like the highlights, but we're going in the opposite direction. We need dark in order to show light. You're meant to have fun in life.
The shadows are just like the highlights, but we're going in the opposite direction. From all of us here, I want to wish you happy painting and God bless, my friends. You can create beautiful things - but you have to see them in your mind first.


1 override of OpenHelper
System.Management.Automation (1)
engine\hostifaces\LocalConnection.cs (1)
594
protected override void
OpenHelper
(bool syncCall)
1 reference to OpenHelper
System.Management.Automation (1)
engine\hostifaces\ConnectionBase.cs (1)
262
OpenHelper
(syncCall);


Would it be possible to add a visualisation that covers feed in tariff for PV
I.e supply it with usage from the grid clamp and output from the pv clamp
give it feed in tariff money figures for generation and the export tariff and have it all display somehow to give a rough idea of how much money is
A: Generated
B: Made from Export
C: Saved in offset from grid use?
I.e the generation can only be counted as a saving if the grid load is lower that the pv output but it is a saving and not a cost if you see what im trying to say!
Does that make sense ?
Re: WISH LIST EmonCMS Feed In Tariff
Are you specifically looking for a custom visualation or would an "amount saved" feed for you to base a visualisation on suffice?
I have feeds for SolarUse SolarUseToday SolarUseTotal SolarSaving SolarSavingToday SolarSavingTotal these are all derived from the calculation of grid input > allow negative only > add solar input = SolarUse, basically solar produced but not exported must have been used. Each can be displayed in Kw/hrs or multiply by feedin-tariff rate for monitary values.
Regards the export v generation amounts do you have an export meter or do you just get a flat 50% of generated like me?
I found it easier to just add 50% of the export unit price to the generated unit price and use that for 100% of generated it works out exactly the same.
Paul
Re: WISH LIST EmonCMS Feed In Tariff
Hi Paul,
It would be nice to have a custom vis that you input export and generation tariffs data into.
It would be nice to see your feeds, my own feeds are almost there but not quite.
This is what I have but I didnt figure out how to do FIT
And I dont have an export meter just 2 generation meters
http://emoncms.org/dodegkr
Re: WISH LIST EmonCMS Feed In Tariff
Here are some screen shots of my current inputs, feeds and some calcs, unfortunately the process lists in emonCMS do require a bit of deciphering because the inputs are not id'd by description, but by input number without a node id. Ignore the Amps feeds they will be deleted in time I only use them when calibrating new software/hardware.
What you may find more useful is the screenshot of my emonCMS calcs backup spreadsheet I made not so long ago when I had a bit of a scare and thought I might lose all my input/feed data, (although I'm pleased to say I didn't) .
Paul
Re: WISH LIST EmonCMS Feed In Tariff
Hi Paul - Could you please explain your cost calculations further? I assume you need to account for the frequency of the input updates in the calculations (ie. The fraction that a 10s represents from an hour).
So if we log every 10s (360 logs an hour) and my unit cost is $0.23 my calculation would be;
(unit cost / 1000) / 360 = cost per Watt per 10s
So in emoncms;
input x 0.00000063889
Doing it this way based on real time usage seems like it will be quite inaccurate as sometimes the log frequency flucatuates.
Is that correct? Or do I have a major flaw in my understanding of emoncms data logging?
Either way I think it would be extremely useful if we could use feed values in processing. That way we can simply use kWh * unit cost
Re: WISH LIST EmonCMS Feed In Tariff
As emoncms already handles both power (kw) and energy (kw/h) it is possible to log amount spent and rate of spend by multiplying by unit price. you don't need to factor in any update rate or time references if you are charged a flat rate all day everyday then that unit price can be just hard-coded into your calc's.
If you look at the solar input processing steps 18 to 25, these steps will work for costs as well, As the processes are designed for power & energy there is some "leveling" math involved, here are those steps explained and altered for your purpose
18 & 19 allow negative & allow positive resets the chain to zero
20 +input "grid"
- allow positive (required to exclude export unless you have a net usage tariff)
21 x 0.023 (23 cents per kw/hr x 0.001 = 0.023 cents per w/hr)
22 log to feed "MyRunningImportCostPerHour" logged/displayed in cents varies & with load
23 x 1000 (this is to counteract the in-built w to kw conversion in the "power to KWh/d" function)
24 Power to KWh/d feed "MyImportCostToday" logged in cents
25 Power to Kwh feed "MyTotalImportCosts" logged in cents
If you have multiple tariff rates for various times that is a different matter which has to be tackled another way.
there are so many different scenarios that one size definitely won't fit all, so if this doesn't work let us know a bit more about your tariff types, system and what you want to log.
Paul
Re: WISH LIST EmonCMS Feed In Tariff
Thanks Paul - no you've got it in one. I do just have a flat rate here so this example works well.
I still can't quite get my head around how emoncms is actually calculating energy usage then but I really appreciate the time you've taken to explain this example. My understanding of the system is getting better with every day!


Design your own Portfolio
After you have completed the steps in "Creating a Portfolio," above, Sakai displays the Step 2 of 3: Design screen.
You may return to the Step 1 screen from this screen at any time. To do so, click the Back button near the bottom of the screen.
To proceed, follow these steps:
- Begin to create a page in the portfolio by clicking the Add Page link. Sakai displays the Add Page screen. Using this screen,
you specify the title, the look and feel, and the content of a page of the portfolio. The screen contains two sections: Page
Information and Page Content.
-
- A right-facing arrow in the header for either section indicates that the section is closed. To open it so you can see the
boxes in that section, click the arrow.
- A down-facing arrow in the header for either section indicates that the section is open (that is, its boxes are displayed).
To close it, click the arrow.
- In the Page Information section, enter a title for the portfolio page in the Title box. The Title entry is required.
- If desired, enter a description of the page in the Description box and enter keywords in the Keywords box.
- Click Select Layout link. Sakai displays a list of layouts.
- Select a layout by following the instructions. After you have selected a layout, Sakai displays the Add Page screen again.
The name of the layout you have chosen is displayed in the Layout box, and a preview of this layout is displayed below the
box.
- To use your institution's default style for fonts, colors, and graphics, leave the Style box blank. To select another style
for this portfolio, click the Select Style link. Sakai displays a list of styles for you to choose from.
- To select a style for this portfolio, follow the instructions. After you have made your selection, Sakai displays the Add
Page screen again. The name of your chosen style is displayed in the Style box. This style applies to the entire portfolio,
unless you select another style for one or more specific pages.
- If the Page Content section is closed, click the arrow in the section header to open it. Sakai displays boxes for the layout
you have chosen.
- Enter text for each part of the layout via the rich text editor. Use the icons and pulldown lists to format the text as appropriate.
To add blocks of text in sequence, click the Add Row button. Sakai displays a box. Choose among these options:
- To add a chunk of text, enter it in the box. You may copy and paste test from another source or key it directly into the box.
Although each box is small, you may enter as much text as you need there.
- To remove a text box, click the Remove Row button.
- To add the next chunk of text, click Add Row again.
- To add this page to your portfolio, click Add Page. Sakai displays the Step 2 of 3: Design screen again. The screen now shows
an icon for the page you have added.
- To add another page, repeat steps 1 - 10.
- To include links that allow users to move from page to page within the portfolio, check the Page Navigation box.
- After finishing your work, choose one of these options:
-
- To save your work and exit, click Finish. Sakai displays the Portfolios home page, and the name of this portfolio is displayed
in the portfolio list. You may return at any time to work on it.
- To publish this portfolio, click Continue. Sakai displays the Step 3 of 3: Publish screen. Its fields are identical to those
of the Select Audience screen. Proceed as instructed in "Publishing a Portfolio" beginning with step 3.
- To exit without saving your work on this portfolio, click Cancel. Sakai displays the Portfolios home page.


[§521-79] Definitions. For the purposes of this part, "domestic violence" shall have the same meaning as "domestic abuse" as defined in section 586-1. [L 2015, c 220, pt of §1]


XXS
XS
SM
MD
LG
XL
XXS only
XS only
SM only
MD only
LG only
XL only
width
height
screen
window outer
window inner
document


“The door opened, and a figure representing the Roman Catholic idea of his Satanic Majesty entered the room. He was very black, and covered with long hair, probably the skin of some wild animal. He had two long white tusks, two horns on his head, a large cloven foot, and a long tail that he drew after him on the floor. He looked so frightful, and recalled to my mind so vividly the figure that I saw at the White Nunnery, that I was very much frightened; still I did not believe it was really a supernatural being. I suspected that it was one of the priests dressed up in that way to frighten us.” — Sarah J Richardson, Life In The Grey Nunnery At Montreal


Notes Troll Delhi University
Beta
Home
About us
Contact us
Privacy Policy
Download Notes Troll App
B.Sc. Electronics Hons.
1st Semester
2nd Semester
3rd Semester
4th Semester
5th Semester
6th Semester
Button


-
skyline pittsburgh pittsburgh pa
Broiled Grapefruit Never Enough Thyme - Recipes and food ...
Feb 19, 2013 . I love its tart, bitter tang when combined with a little sweetness. . I know most broiled grapefruit recipes take the cooking further, but I prefer it just barely golden and heated through. . Grapefruit Sorbet from How Sweet It Is; Meringue Topped Baked Grapefruit . 9 Penny Wolf February 20, 2013 at 6:53 am .
http://www.lanascooking.com/2013/02/19/broiled-grapefruit/
-
time to build a police car
Finicky Fish Eater? You'll Love this Broiled Cod Recipe from Taste of ...
Feb 25, 2013 . You'll Love this Broiled Cod Recipe from Taste of Home . St. Patricks's Day with a Scrumptious Blarney Breakfast Bake from Taste of Home . 'The Hangover 3? Trailer Breakdown: 10 Clues About the Wolf Pack's Final Go .
http://kkcb.com/finicky-fish-eater-youll-love-this-broiled-cod-recipe-from-taste-of-home/
-
rusty gables guest lodge
The Kitchy Kitchen: BREAKFAST IN BED FOR FOOD FOR ...
Feb 2, 2013 . Set on the center rack and broil for 5-7 minutes until the whites are set and the yolk is runny. . Bake for 25 minutes, or until the tops bounce back when lightly pressed. . Hi anonymous, I love graphic design questions! . Shiny Squirrel · Design Love Fest · That Kind of Woman · Wolf in the Forest · SF Girl by .
http://thekitchykitchen.blogspot.com/2013/02/breakfast-in-bed-for-food-for-thought.html
-
love wolves baked broiled
Let Me See Your 'Grill': Barbecuing For Better or For ... - Robb Wolf
Jun 20, 2012 . Anyways - love the book so far! You have to love e-books.. I mentioned your book . Broiling or baking is best for partial cooking. Kevin, Dubai.
http://robbwolf.com/2012/06/20/grill-barbecuing-worse/
-
band called black label
Wolf R304 information from Consumer Reports
Get the latest information from Consumer Reports to help you shop for a Wolf R304, . performance, and oven baking, broiling, and self-cleaning performance. . Just moved and had to leave my Wolf behind after 3 years of love and friendship.
http://consumerreports.org/cro/appliances/kitchen-appliances/kitchen-ranges/gas-range-ratings/models/overview/wolf-r304-99043006.htm
-
little guy german shepherd champion pedigree
I need a new range. (DCS, Viking, or Wolf) - Cookware - Chowhound
Sep 29, 2009 . The local dealer sells DCS, Viking, and Wolf as their higher end offerings. . chard is a fav), broiled/baked fish and chicken, bread, cookies, etc. . on the Wolf - we have a 6 burner dual-fuel and I love it BUT the cooktop is a .
http://chowhound.chow.com/topics/655880
-
examples ofdrug biologic products
Broiled Mussels Rockefeller | Eat The Roses
Nov 14, 2011 . This is a heavily updated version of a recipe for broiled mussels with herb butter . Stick onto a rack towards the top of the oven and bake for 3-4 minutes . I love mussels, but I never think to prepare it this way. . I still need to make (again), photograph (and not just wolf it all down before remembering to!) .
http://eattheroses.wordpress.com/2011/11/14/broiled-mussels-rockefeller/
-
driving in elizabethtown ky
Wolf Country, Myth and Stories, Vivian-Wolf
He fell in love and knew instantly that he must father her son. . the girl, she began to sense the great loneliness that was broiling up inside the young goddess.
http://www.wolfcountry.net/information/myth_stories/vivian.html
-
pawtucket public schools ri
The Blue Wolf Tavern - Youngstown, OH
10 Reviews of The Blue Wolf Tavern "I think it's fair to say that Youngstown isn't a . For dinner I ordered the Broiled Pacific Grouper, broiled grouper "served over tomato basil . For my side I chose a baked potato, it was a great baked potato. . Love that. Great local spot! Was this review
? Useful (3); Funny (2); Cool (2) .
http://www.yelp.com/biz/the-blue-wolf-tavern-youngstown
-
doug seay huntsville alabama
To leave or not to leave the oven door open while broiling? - Food52 ...
Assuming the latter, you're no longer broiling, you're baking at 500F or somewhere . of both Wolf and GE ovens, both of which give the instruction to " always broil with the . But otherwise I love it more than previous electric ovens I have had.
http://food52.com/hotline/18051-to-leave-or-not-to-leave-the-oven-door-open-while-broiling
-
myob pocket pc nor
Gas vs. Electric Ovens | The Kitchn
Jan 16, 2008 . Then we broiled a dish in another friend's gas oven and there too we . And, as an aside: my parents bought a $5k dual-fuel Wolf stove/2-oven last . and, while I love that the oven is a consistent temperature for my baking, .
http://www.thekitchn.com/hot-or-not-lock-n-bake-40512
-
star wars risk online
Buettner's Wild Wolf Inn - White Lake, WI
6 Reviews of Buettner's Wild Wolf Inn "I really enjoyed this place. . Perhaps the strip steak was more medium than medium rare but I loved my prime rib, not too fatty and cooked perfectly. . My friend had broiled fish and it was excellent.
http://www.yelp.com/biz/buettners-wild-wolf-inn-white-lake
-
abengoa quality systems manager
Sub-Zero/Wolf Press Releases
The cooking modes include bake, bake stone, broil, convection bake, convection broil, convection roast, dehydration, roast, proof and convection. While Wolf's .
http://www.subzero-wolf.com/kitchen-appliances/press-releases/press54.aspx
-
american pool product swimming
30" electric wall-ovens: American Range (AROFE-30) / Wolf (S0302US ...
Oct 19, 2012 . So, any comments from users of either the Wolf or American Range electric ovens would . The American Range oven has a Ribbon Bake element and an Infrared Broil element. . another vote for AR and I love Wolf products .
http://chowhound.chow.com/topics/874226
-
removing nitrites from aquariums
CFSCC presents: EAT THIS!: Quick & Easy Paleo Broiled Flank Steak
Feb 23, 2011 . Place flank steak on a broiler pan and broil for about 5 minutes on each side. . We served this with steamed broccoli and baked sliced sweet potatoes . of people who share a similar dedication to health, fitness and a love for food! . CrossFit Santa Cruz Central (mothership to this blog) · Robb Wolf: The .
http://cfscceat.blogspot.com/2011/02/quick-easy-paleo-broiled-flank-steak.html
-
home
Gas Ovens - How To Information | eHow.com
Broiling a burger in a gas oven will require you to keep a few important things in mind to . An outdoor oven that burns gas and is made from brick can bake most types of food. . Many consumers love their gas ovens for the even, fast cooking, but a . Wolf gas ovens come in sizes from 30 to 60 inches and they all include .
http://www.ehow.com/gas-ovens/
-
ero-pro shark s3501 instructions
Ovens 2.0: Hotter, Faster, Smarter | Food & Wine
TurboChef: Speed; Thermador: Rotisserie; Wolf: Dehydration; Viking: Steam . But just how smart is this cookie-baking HAL 9000? . figured out that the best way to cook the tart was to tell the oven it was broiling a piece of fish. . to re- create the fruit and vegetable chips that chefs love to use as garnishes these days.
http://www.foodandwine.com/articles/ovens-two-hotter-faster-smarter
-
oak forest fest 2009
For The Love Of Food » Blog
Jan 14, 2013 . I add carrots and onions right in the cooking pan, and bake a potato . Broiled Salmon served on Salad with a thin crust pizza instead of potato or rice. . his grandson: My son, there is a battle between two wolves inside us all .
http://www.fortheloveoffood.org/blog/page/2/
-
examples ofdrug biologic products
Platine Bakery Shades of Love Cake | Williams-Sonoma
This ombre pink layer cake chronicles all the stages of Valentine's Day love, from smoldering to red hot. The dessert was inspired by lifestyle expert and Elevate .
http://www.williams-sonoma.com/products/platine-shades-of-love-cake/
-
what you see when on ecstacy
Better Cooking Through Convection - Fine Cooking Recipes ...
Taunton's Fine Cooking - For people who love to cook · Login | Create an Account · Recipes · recipes home. Main Ingredient; Apples · Beans · Beef · Bread .
http://www.finecooking.com/articles/convection-ovens.aspx


The RMI module generates most of the source code you need for RMI client and server programs. For an overview of how RMI works in the IDE, see:
RMI Technology
Required Files for RMI Programs
Steps for Creating an RMI Program
For a comprehensive tutorial on RMI, visit the Sun Microsystems web site
at java.sun.com/docs/books/tutorial/rmi
.