Cirro API Documentation
Authentication
Generate a RSA key pair
Generate a RSA key pair for your app at your app's settings page. Once generated the private key in "PEM" format will be downloaded automatically. Please store the key file securely on your app's server. Each key pair comes with a unique fingerprint. You can verify your key's fingerprint with:
openssl rsa -in PATH_TO_PEM_FILE -pubout -outform DER | openssl sha1 -c
Create your access token
To authenticate to cirro API you need the following:
- The private key in PEM format
- Your app id
Use your private key to sign a JSON Web Token (JWT) which contains your app's id as the issuer in the payload.
# Example in ruby
require 'openssl'
require 'jwt'
# Private key contents
private_pem = File.read(PATH_TO_YOUR_PEM_FILE)
private_key = OpenSSL::PKey::RSA.new(private_pem)
payload = {
# JWT expiration time (10 minute maximum)
exp: Time.now.to_i + (10 * 60),
# App client id
iss: YOUR_APP_ID
}
jwt_token = JWT.encode(payload, private_key, 'RS256')
After creating your JWT token use it in your request's authorization header.
$ curl -i -H "Authorization: Bearer YOUR_JWT" https://api.cirro.io/v1/app
AppUsers
Create an app user
Request
Endpoint
POST https://api.cirro.io/v1/app-users
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMTZ9.ejZXHst1XFRi0RdP0JPQonWHv4Gdsthlp9uS5xSgy_8rKMchHQsdAHux4VhCiKrJW6XzCIGOB-rF7FtjJJT-FMBPY_wB1GkQ5LC65GIFeK90SYM8U_XaZCh9s0mSSFTgpbtJrJQt7NUwJLpiLLyYzwXLJskXO1GtQmo7aK_3K1trRylOOs1YIeRL1oDeqjY26YCt4u5lk7axgripoMxvdUktVR1c7sVjstt_t0r_5khFumboWDJIjfb6Kna332xC3-6SeAM-qg1BG3VHtfKQcbmxR9NnKxsmbCzX6PuCSDY6WzsxWaQdFvnvXSKcL8MYgt65u4TLdrCpsqV8EMgqUA
POST https://api.cirro.io/v1/app-users
Parameters
{"data":{"type":"app-users","attributes":{"email":"[email protected]","first-name":"Kia","last-name":"Heathcote","password":"hq1kkh4j","time-zone":"Asia/Kuala_Lumpur"}}}
Name | Description |
---|---|
type required | MUST be app-users |
attributes[email] required | |
attributes[first_name] required | First name |
attributes[last_name] required | Last name |
attributes[password] | Password for Cirro |
attributes[time_zone] | Time zone |
attributes[auto_confirm] | Auto confirm? |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "17",
"type": "app-users",
"links": {
"self": "https://api.cirro.io/api/v1/app-users/17"
},
"attributes": {
"email": "[email protected]",
"first-name": "Kia",
"last-name": "Heathcote",
"time-zone": "Asia/Kuala_Lumpur",
"epam-idx": null,
"country-code": null,
"auto-confirm": null,
"epam-user-info": null
},
"relationships": {
"connected-accounts": {
"links": {
"self": "https://api.cirro.io/api/v1/app-users/17/relationships/connected-accounts",
"related": "https://api.cirro.io/api/v1/app-users/17/connected-accounts"
}
}
}
}
}
Get an app user
Request
Endpoint
GET https://api.cirro.io/v1/app-users/13.json
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMTV9.hirXQSTs0iU0Z-dTA7eYtUkxnS4eF9yaIJhEzBfKFOvibKjrZVks5pEEoRcHvy8xNEPBOy-AUitL98NLs_Q7avC5pbs-Ns583zampiMmqkDjCJiqF0n5Qg3keCQi40ftIW-ZLFobw7pLpOJ9c8a7ZsFK4kmmqIJelC_w-ktR8TknE3SPQK9eOkafAJm0jtegkmb2lA-j7t7wJB-kdUJ3fmjvmhftsrNx0d9U-zVJI4dqNkShMYI3hKECCQfHUGK3fgo8p7bSb9-ITPK3jK8-wp3Nr_mV0B-5xooD_SurY8iZY8JiQVVR3yJz-U39Nyxc2GCq-qh9C9KS0aNhJCP4TA
GET https://api.cirro.io/v1/app-users/:id.json
Parameters
Name | Description |
---|---|
id required | ID of the app user |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "13",
"type": "app-users",
"links": {
"self": "https://api.cirro.io/api/v1/app-users/13"
},
"attributes": {
"email": "[email protected]",
"first-name": "Syreeta",
"last-name": "Douglas",
"time-zone": "Europe/Dublin",
"epam-idx": null,
"country-code": "GQ",
"auto-confirm": null,
"epam-user-info": null
},
"relationships": {
"connected-accounts": {
"links": {
"self": "https://api.cirro.io/api/v1/app-users/13/relationships/connected-accounts",
"related": "https://api.cirro.io/api/v1/app-users/13/connected-accounts"
}
}
}
}
}
Get an app user
Request
Endpoint
GET https://api.cirro.io/v1/app-users/15
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMTZ9.B4-zf12DfbJ1daG54zVOGlpCTaev9t36fmkDQgOL1865VYJK_KvNKjAnssH43F-p5iCkfsFUVzzIcy9Csye-d7P1WIjFQzYRN7wqrAodstFhz7tW8DNCBUkjUUVVWPMBd7y7tck7K8cEXexguW72Hwdz7f02pf3pVYqNZVum9pqoyVWERBNF1EVj51IIByys_E8k7ztNTwnm2zdIH_jVCTXQubS7YB77em9HAYybLxQLUCxbyylw_ZU4-CNEDwI9B7mKIN0yzmTzgUSXyuhCf6XNHS2aQGPkhuNtYhqc478BADuIjuSGspU-m-0TdfsRYBPCi_yMa-Id0Uv0jEr9aQ
GET https://api.cirro.io/v1/app-users/:id
Parameters
Name | Description |
---|---|
id required | ID of the app user |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "15",
"type": "app-users",
"links": {
"self": "https://api.cirro.io/api/v1/app-users/15"
},
"attributes": {
"email": "[email protected]",
"first-name": "Darby",
"last-name": "Koepp",
"time-zone": "Europe/Zagreb",
"epam-idx": null,
"country-code": "MG",
"auto-confirm": null,
"epam-user-info": null
},
"relationships": {
"connected-accounts": {
"links": {
"self": "https://api.cirro.io/api/v1/app-users/15/relationships/connected-accounts",
"related": "https://api.cirro.io/api/v1/app-users/15/connected-accounts"
}
}
}
}
}
Get current app user
Request
Endpoint
GET https://api.cirro.io/v1/app-users/me?include=app-worker%2Capp-worker.gig-invitations%2Cconnected-accounts
Content-Type: application/vnd.api+json
Authorization: Bearer TEKTQ8OomB38EBlvh3Pb35E_f-epq3xZeHJvjo1ByGg
GET https://api.cirro.io/v1/app-users/me
Parameters
include: app-worker,app-worker.gig-invitations,connected-accounts
None known.
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "2",
"type": "app-users",
"links": {
"self": "https://api.cirro.io/api/v1/app-users/2"
},
"attributes": {
"email": "[email protected]",
"first-name": "Yvonne",
"last-name": "Price",
"time-zone": "America/Bogota",
"epam-idx": null,
"country-code": "WF",
"auto-confirm": null,
"epam-user-info": null
},
"relationships": {
"app-worker": {
"data": {
"type": "app-workers",
"id": "1"
}
},
"connected-accounts": {
"links": {
"self": "https://api.cirro.io/api/v1/app-users/2/relationships/connected-accounts",
"related": "https://api.cirro.io/api/v1/app-users/2/connected-accounts"
},
"data": [
{
"type": "connected-accounts",
"id": "1"
}
]
}
}
},
"included": [
{
"id": "1",
"type": "app-workers",
"links": {
"self": "https://api.cirro.io/api/v1/app-workers/1"
},
"attributes": {
"worker-document": {
"app_worker_id": 1,
"eos": [
"consequuntur"
],
"et": 96
},
"billable": true
},
"relationships": {
"gig-invitations": {
"data": [
{
"type": "gig-invitations",
"id": "1"
},
{
"type": "gig-invitations",
"id": "2"
}
]
}
}
},
{
"id": "1",
"type": "gig-invitations",
"links": {
"self": "https://api.cirro.io/api/v1/gig-invitations/1"
},
"attributes": {
"status": "pending",
"gig-id": 1,
"app-worker-id": 1
},
"relationships": {
"app-worker": {
"data": {
"type": "app-workers",
"id": "1"
}
}
}
},
{
"id": "2",
"type": "gig-invitations",
"links": {
"self": "https://api.cirro.io/api/v1/gig-invitations/2"
},
"attributes": {
"status": "pending",
"gig-id": 2,
"app-worker-id": 1
},
"relationships": {
"app-worker": {
"data": {
"type": "app-workers",
"id": "1"
}
}
}
},
{
"id": "1",
"type": "connected-accounts",
"attributes": {
"provider": "linkedin"
}
}
]
}
Update an app user
Request
Endpoint
PATCH https://api.cirro.io/v1/app-users/24
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMTh9.I3sfGQWmJDIeHci16rpVPxOuOHWFN730IMxYe1QAO05bnnz3F_EBBuBu4TVE8A1AkSMu5x9alPim2tr_jN9ROSvBNeVCjZrnM8w2Fu4V9mPNMrYkALNwqKKC5bShzI9PQnqJ7z5jydvQ75F8Kb1C76eiDDfmuphHD9DPpb04fbj4apX0WsS3YtsaUtvDFx0J9rt7A3N80p1Oz2UPVbhRlHOMK8hqQ-CT1oW2ybS1FNMeUwPrxR1ujm5RPy7Tb0rqyQtLQ69Jnrj9H3d5LPxD7J-gDhwZaS4pmhcmB3mlCOOuD0PTzQu9gW0zYexid7kL30Jx2GZcaY80KqwbhA9MHQ
PATCH https://api.cirro.io/v1/app-users/:id
Parameters
{"data":{"type":"app-users","attributes":{"password":"itti0m36"},"id":24}}
Name | Description |
---|---|
id required | ID of the app user |
type required | MUST be app-users |
attributes[password] required | A new password for Cirro |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "24",
"type": "app-users",
"links": {
"self": "https://api.cirro.io/api/v1/app-users/24"
},
"attributes": {
"email": "[email protected]",
"first-name": "Jamal",
"last-name": "Bruen",
"time-zone": "Asia/Kuwait",
"epam-idx": null,
"country-code": "MX",
"auto-confirm": null,
"epam-user-info": null
},
"relationships": {
"connected-accounts": {
"links": {
"self": "https://api.cirro.io/api/v1/app-users/24/relationships/connected-accounts",
"related": "https://api.cirro.io/api/v1/app-users/24/connected-accounts"
}
}
}
}
}
Update an app user
Request
Endpoint
PUT https://api.cirro.io/v1/app-users/34
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMTl9.irGJFDzp_7oqT-cZ1vDZecZCTsHJUezn12EvUfu08Of3QxKkd5-K7VjrkMuBQq7ZXW57L5J-4ukA48A95qUcNqlJ2S7r28MJuSmM2uxSO1H6fuItrubisY-nppDhXmh74A0_d-TYVpho-G9HLUxTmp9tYc8STbrdJilasVmCpu_SoeAMI_-9TVG6E0l6hcq1gtw9O7MV6-5CFKUd5--vgzfr3UcZt7nmc0aLtW_oBQasG5vdzffyF4dn2dsjnsRf1kHpM6LlshBiwkCPmKT8inYwMN8rBWX9BFziX5oTlIEqCFuDIM-OgKe2ZsPdRjoTfGbiL22oOFd-6iAtqChsrg
PUT https://api.cirro.io/v1/app-users/:id
Parameters
{"data":{"type":"app-users","attributes":{"password":"4l44o7i9"},"id":34}}
Name | Description |
---|---|
id required | ID of the app user |
type required | MUST be app-users |
attributes[password] required | A new password for Cirro |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "34",
"type": "app-users",
"links": {
"self": "https://api.cirro.io/api/v1/app-users/34"
},
"attributes": {
"email": "[email protected]",
"first-name": "German",
"last-name": "Bednar",
"time-zone": "Asia/Tashkent",
"epam-idx": null,
"country-code": "UA",
"auto-confirm": null,
"epam-user-info": null
},
"relationships": {
"connected-accounts": {
"links": {
"self": "https://api.cirro.io/api/v1/app-users/34/relationships/connected-accounts",
"related": "https://api.cirro.io/api/v1/app-users/34/connected-accounts"
}
}
}
}
}
AppWorkers
Create an app worker
Request
Endpoint
POST https://api.cirro.io/v1/app-workers
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMjJ9.P97vLpgQiqzCAzvThIr8rEoMe8a0UhF3dIMshdwkASJwj3Ryl7dCS7U9rCTnWYjovkFsnpaLpvrCDF9aectKSyX72wrQpFs_yH5eta-WF2uRrml3FIc5Z4_EVUT8LBqYbznwFPwHLPXgQhE2DimpMcn1LheBRBCAmaf-Tcn28JQCj2vdVNG2Wj-gaq654ttavK6DXS9feYe3oTJkTVlNyMzmZ6Q_n_xIy_531KwNjmN_7Sy5HWToTmwnx-aaMiJulP-pI5JQtRsM263HAqNg_f1glt9EbHEIdjAJyM-X1vg9jKxXBaHiTedw2RZ3i1bDg9ObxwPT3QVTPWVaHhiKvA
POST https://api.cirro.io/v1/app-workers
Parameters
{"data":{"type":"app-workers","attributes":{"worker-document":{}},"relationships":{"app-user":{"data":{"type":"app-users","id":"46"}}}}}
Name | Description |
---|---|
type required | MUST be app-workers |
attributes[worker_document] required | Worker's attributes |
relationships[app_user] required | Associated user |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "9",
"type": "app-workers",
"links": {
"self": "https://api.cirro.io/api/v1/app-workers/9"
},
"attributes": {
"worker-document": {
"app_worker_id": 9
},
"billable": true
}
}
}
Get an app worker
Request
Endpoint
GET https://api.cirro.io/v1/app-workers/15
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMjN9.cC4iybUZRmN1QTR2mP1WTnGsvVY2Tg48f6xTEI19N4jvclzR9DhLHILA1S7fTyAEOxPkom-kjo1iivw9K7o5Y-3GdStbD_Ue_ceRX29BdoBceVvhs5V6NVZoqyaZwU9ghZ7xH2x5aB2RK-LpoLjACD8qUnIoY180EyEUZS_phjorOVjocrS1bbno614bKl-bcI3cGwZq-tmbLVqT0Ix32qRfhiu098F9ChYjtesaTu3TUjGfeDq3Fmrxoc37ZJ7q9VsDDHL1nm6OcrVXoyLuBXuZAUE8A2a9DAI7Joc9UnZ96ReG-9M1k-sCwxZ7z9-0CLakZWu5dqlxM6ce_r6gEA
GET https://api.cirro.io/v1/app-workers/:id
Parameters
Name | Description |
---|---|
id required | ID of the app worker |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "15",
"type": "app-workers",
"links": {
"self": "https://api.cirro.io/api/v1/app-workers/15"
},
"attributes": {
"worker-document": {
"app_worker_id": 15,
"nesciunt": "a",
"praesentium": "harum",
"dolorum": [
96
],
"impedit": "sit",
"eos": "eius",
"voluptatibus": 18,
"quas": {
"est": "sit"
}
},
"billable": true
}
}
}
Get current worker
Request
Endpoint
GET https://api.cirro.io/v1/app-workers/me?include=gig-invitations
Content-Type: application/vnd.api+json
Authorization: Bearer kXp5ljDPaWc4391VyjDbjiL_MXV8oZevvs74E5v6d1k
GET https://api.cirro.io/v1/app-workers/me
Parameters
include: gig-invitations
None known.
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "7",
"type": "app-workers",
"links": {
"self": "https://api.cirro.io/api/v1/app-workers/7"
},
"attributes": {
"worker-document": {
"app_worker_id": 7
},
"billable": true
},
"relationships": {
"gig-invitations": {
"data": [
{
"type": "gig-invitations",
"id": "13"
},
{
"type": "gig-invitations",
"id": "14"
}
]
}
}
},
"included": [
{
"id": "13",
"type": "gig-invitations",
"links": {
"self": "https://api.cirro.io/api/v1/gig-invitations/13"
},
"attributes": {
"status": "pending",
"gig-id": 13,
"app-worker-id": 7
},
"relationships": {
"app-worker": {
"data": {
"type": "app-workers",
"id": "7"
}
}
}
},
{
"id": "14",
"type": "gig-invitations",
"links": {
"self": "https://api.cirro.io/api/v1/gig-invitations/14"
},
"attributes": {
"status": "pending",
"gig-id": 14,
"app-worker-id": 7
},
"relationships": {
"app-worker": {
"data": {
"type": "app-workers",
"id": "7"
}
}
}
}
]
}
Update an app worker
Request
Endpoint
PATCH https://api.cirro.io/v1/app-workers/17
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMjR9.dO0ecE5uDbysch2f8vN0qJOv8UxmH5SXRdRBQclcEHKh7Zl793bq3tYdnGr93cKBFqdvg94kStsBLjzTApGY_6k9_Bno4-F6zNF8niFW03Z0mHEmQhOo1kXMiXUEvKnJ--Wk5Euu8xZh8BCBiw1eBg_A5AGmK6k7OUF8L6OvKPTi4BXMLhCfe7Dz5FRt22kzWfeSQe6OH2zWY8GGKeyH-ycYXa5OhmzmdEu9TrTpxah5GXxVzKPqtk8b55b5JQKY7orSsQtyfIjn1yhrUfFiYoqpU4KIsn1UKOzX6pI-jUPdA6GZdu1bXxl7Mh3ZADb-o03Vox3DTjC4GP0OEmwQZg
PATCH https://api.cirro.io/v1/app-workers/:id
Parameters
{"data":{"type":"app-workers","attributes":{"worker-document":{"quis":"vel","inventore":"enim","fugit":["recusandae"],"porro":{"quibusdam":85},"iure":{"aspernatur":54},"et":75,"officiis":{"distinctio":"deserunt"}}},"id":17}}
Name | Description |
---|---|
id required | ID of the app worker |
type required | MUST be app-workers |
attributes[worker_document] required | Arbitrary JSON |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "17",
"type": "app-workers",
"links": {
"self": "https://api.cirro.io/api/v1/app-workers/17"
},
"attributes": {
"worker-document": {
"app_worker_id": 17,
"et": 75,
"fugit": [
"recusandae"
],
"inventore": "enim",
"iure": {
"aspernatur": 54
},
"officiis": {
"distinctio": "deserunt"
},
"porro": {
"quibusdam": 85
},
"quis": "vel"
},
"billable": true
}
}
}
Update an app worker
Request
Endpoint
PUT https://api.cirro.io/v1/app-workers/22
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMjV9.jcdTiMqpEwebVzC0hG-9qTuVD1rEORgbvf7NuviqiXi0Og6u9If7U2HgvwfHFfgEXhrM0biJQ4PT47xDmgSZdCF6jOcbpmRCqoiDtcENotHxVp7-cCH1FBFzWajuLAx4mcM4TBbisspUyKrQ3bLwnb_c9JMPl3lGJX6bhid5cYfhdB1hjLaXfFvAnL2mrck_Tn-x0GNDPwhzWcLRKuMht72FTTUGRMyqL7FTzPSEkEqvoWYwH19vRXWG4KOWTBDb23AVzK9KuWtb7C7PywLUJZBNtPQSnlFWlGxz21KPJbA0joOt1POifU5-SXo10D9rN0xVOiRpo5kBPB_9eTNqNw
PUT https://api.cirro.io/v1/app-workers/:id
Parameters
{"data":{"type":"app-workers","attributes":{"worker-document":{"sed":{"est":"dolore"}}},"id":22}}
Name | Description |
---|---|
id required | ID of the app worker |
type required | MUST be app-workers |
attributes[worker_document] required | Arbitrary JSON |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "22",
"type": "app-workers",
"links": {
"self": "https://api.cirro.io/api/v1/app-workers/22"
},
"attributes": {
"worker-document": {
"app_worker_id": 22,
"rerum": [
"vitae"
],
"tempora": "voluptatem",
"consequuntur": {
"laboriosam": 40
},
"repellendus": 89,
"ut": 59,
"sed": {
"est": "dolore"
}
},
"billable": true
}
}
}
ConnectedAccounts
Get list of connected accounts of a user
Request
Endpoint
GET http://api.cirro.io/v1/app-users/116/connected-accounts
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMzF9.kdd_yEjofVG7hovWsCSB0fMNjqlQlJhn4Wjt7SuIHWvWaa_XJvRQN3qDW9Lk67ZNgB6fqRXC8PO7D6HUWfePIwdaFGVNhrRSPnpzTlV3ao6gtwzgzE3SF0iizyPrzGr3DgSJ-rjF8Zn82t5yy0DwIXRhm2Z7pS8GTorn_JgEgjGqtxMQBo8TxTGX7wRTd_X2zRoyi7NqJ8hSNVJEoNuAKb7-nMbw4jYc80A7GJnLoHc_JOxcjE9z_UA0io4zuZ9ledgnR6IHd_cZ60p85F8pEFfyNHWo1vQJzvZSW0i0W94_Rhc7dq9_lGdTNgb1paJsF6uQvfNBsUGDldIath7DCw
GET http://api.cirro.io/v1/app-users/:app_user_id/connected-accounts
Parameters
None known.
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": [
{
"id": "7",
"type": "connected-accounts",
"attributes": {
"provider": "linkedin"
}
}
]
}
GigInvitations
Create a gig invitation
Request
Endpoint
POST https://api.cirro.io/v1/gig-invitations
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMzZ9.TzZsEnretSsG3oRG33rWKPSGEEMc-JuOFX2UWjSpdvhSAhH-AAXLbs2n1dT9_cxIEE9aeK6HHAThCW9kKHRirgL_F4sern7TZqR36SdSMECee3UEp5fI2a-x3P4H1WH1zYM-SHHt4MIF_U6DW86hImfl-J6XxVPaDqa0sMjycaqz-b-Z3IimUsaJKP_c5pLEjUtSOm_PbQPTcRtdPC0Ch3XlY7KCegHcf-ljFBRgv14CWD1F36rnTzwtxZ6lrnq4nmbgY0Qak-8Owyrd84tSqzyyCp-ODsUwQPDUqmV1U14lEmsdut2t0gY5RGyMiut8quSjvXZtdvl5h7jhmRY0Qg
POST https://api.cirro.io/v1/gig-invitations
Parameters
{"data":{"type":"gig-invitations","attributes":{"status":"accepted"},"relationships":{"gig":{"data":{"type":"gigs","id":"87"}},"app-worker":{"data":{"type":"app-workers","id":"106"}}}}}
Name | Description |
---|---|
type required | MUST be gig-invitations |
attributes[status] | Status |
relationships[gig] required | Gig to invite to |
relationships[app_worker] required | App worker to invite |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "85",
"type": "gig-invitations",
"links": {
"self": "https://api.cirro.io/api/v1/gig-invitations/85"
},
"attributes": {
"status": "accepted",
"gig-id": 87,
"app-worker-id": 106
}
}
}
Create invitations matching the worker filter
Request
Endpoint
POST https://api.cirro.io/v1/bulk/gigs/17/gig_invitations
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMjZ9.TRFUg_Z3JZtXGGaWnm0gwdj95kZTDy5Jw8SPHdMUpxBGxH3xdpq190yxHiem04w8lpzxLBIL__583T7kiybVuY9EYdXLvoMOFnjOWKO5BhcDN9at2DgHCGlJdTtMQMW9yFPble0S3voWtJLDr-e0nLeWEZnQShGCHIWyCh-mXoGKUaWUQTZ15XOE3xSiGgsvYrAPTD-RF1TSj8RilJvNOhQgxGb7SlUo7hSnH9dhwcfYf8BD85kVtM_UZxHMBPpkQLcIYGxZAnIWRgVqp0sMF2VsW7p4WEHG6bUdDXU4WcsuusCYpm-Pqgd_uIeRhFZJDHpXmHLa_EG8eFPAhNv2kQ
POST https://api.cirro.io/v1/bulk/gigs/:gig_id/gig_invitations
Parameters
{"data":{"attributes":{"worker-filter":{"filter-query":"{ \"app_worker_id\": { \"$in\": [27, 28] } }"}},"type":"gig-invitations"}}
Name | Description |
---|---|
gig_id required | ID of the gig |
attributes[worker_filter] required | Filter workers to invite |
attributes[auto_accept] | Whether or not to accept the invitations automatically |
type required | MUST be gig-invitations |
Response
Content-Type: application/json; charset=utf-8
201 Created
{
"data": [
{
"id": "17",
"type": "gig-invitations",
"links": {
"self": "/api/v1/gig-invitations/17"
},
"attributes": {
"status": "pending",
"gig-id": 17,
"app-worker-id": 27
}
},
{
"id": "18",
"type": "gig-invitations",
"links": {
"self": "/api/v1/gig-invitations/18"
},
"attributes": {
"status": "pending",
"gig-id": 17,
"app-worker-id": 28
}
}
]
}
Get a gig invitation
Request
Endpoint
GET https://api.cirro.io/v1/gig-invitations/89
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMzh9.rgo16whCxxLq3_lNeIMHczab2US8yZR1d6BdQwBk29nFVracyjqJWx7wvvVn-2TuxmFpOPJ4O46VR_oYs8u_rU22Ga3Hy9NiQACNfDI-ktydhezBHQBs8vlaW0FCPpvFwEvQZn00k1F6HLMbIjeVhy7ctLIPF8-3xMJlpxeWQ619IczSTTQ4nRjuOlVe_66g_nI4TP_dfcp0wkxKMXxf656hHQA4OqjLiuSgQfizzir-SYDdMRUtGnm-IYlDqr4BuQzR6cnYYZxK3WaaBIMUVWLue310YWXTNgqgnZ_SFT0pd_0PH4wnfsYurVmSfCdYUwUEp6lQJsne5d1hYCp5-w
GET https://api.cirro.io/v1/gig-invitations/:id
Parameters
Name | Description |
---|---|
id required | ID of the gig invitation |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "89",
"type": "gig-invitations",
"links": {
"self": "https://api.cirro.io/api/v1/gig-invitations/89"
},
"attributes": {
"status": "pending",
"gig-id": 102,
"app-worker-id": 121
}
}
}
Get a list of gig invitations
Request
Endpoint
GET https://api.cirro.io/v1/gig-invitations
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMzJ9.NJMEUklangduaKydT-N3OCdP1wshM28T9VEUOPXucmZ9vX7oOFs4lmG6PdDpyhtDrmA6UApFVuTn1XLq_TOGsXRGAjsDM1eYcYq-231xeAu12xIGj_6d8sp0IN9XYe0z9PMqQc4ILKvSBaWdKub7MAm_Ny5fusQ0zq3utXBnm7NWlaAR9_kYoNwc3n-wxY89O7PJOp7QzV3xN_2yPbYN7JUgXnsYbCrBpn75CIYrU200AkTK4Ym_PnpdiYwpc9SmJ8d1tSikXkVG9x8No8YyZLmryk2hnYNrLNRKytcXOlTG9-tibSy7nAMPgLRUeCqdNXQKc9MGrOb01wXuaDJ4Eg
GET https://api.cirro.io/v1/gig-invitations
Parameters
{"data":{"filter":{}}}:
Name | Description |
---|---|
filter[status] | Current status |
filter[gig_id] | ID(s) of a gig to invite to |
filter[app_worker_id] | ID(s) of an app worker invited |
filter[created_since] | Created after |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": [
{
"id": "45",
"type": "gig-invitations",
"links": {
"self": "https://api.cirro.io/api/v1/gig-invitations/45"
},
"attributes": {
"status": "accepted",
"gig-id": 37,
"app-worker-id": 56
}
},
{
"id": "46",
"type": "gig-invitations",
"links": {
"self": "https://api.cirro.io/api/v1/gig-invitations/46"
},
"attributes": {
"status": "accepted",
"gig-id": 38,
"app-worker-id": 57
}
}
]
}
Update a gig invitation
Request
Endpoint
PATCH https://api.cirro.io/v1/gig-invitations/91
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwMzl9.spkGqZoFUtBcFlsgEGBUuAh1qxfqPbB5EWGg1cBYMVaFnJUBXwCa1FBMELT_TB2iwQbv055vC0qsNdW3v8vOp_Dq_HoI_zoKGfeEupUsMXrpCKCPr-FsNvG3nskhwruBYL7vUX2z2PJ_awvIKUGdVOvzfcPJ1BOmZKX9MIKZ26MQndcdwiSLk77C2wsyTHQiRElUWfahPMX6BlXstCpkzSR0y1co4TU7y7Xlsvs62S5KevfLfF5enkAuD4zOilXAQ44p_j4elmDsWhsExEqkQnYodz0kgYbe_YKZIzaih6ITN2_wSAPGMiaPh9UJjznA3f9xMoSbxmt51QcCHcMjsg
PATCH https://api.cirro.io/v1/gig-invitations/:id
Parameters
{"data":{"type":"gig-invitations","attributes":{"status":"rejected"},"id":91}}
Name | Description |
---|---|
id required | ID of the gig invitation |
type required | MUST be gig-invitations |
attributes[status] required | Status |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "91",
"type": "gig-invitations",
"links": {
"self": "https://api.cirro.io/api/v1/gig-invitations/91"
},
"attributes": {
"status": "rejected",
"gig-id": 106,
"app-worker-id": 125
}
}
}
Update a gig invitation
Request
Endpoint
PUT https://api.cirro.io/v1/gig-invitations/98
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNDF9.HyreGVbJZpKQWjm3ZGQ4V6Q50RVmhpUUTmGlWt8s8nUeorAoiYkaNjiftysnBCvIyoCe0SHdn7GcnRWY7b_21owTWEa_vGtUFD6LR-cTB6AQjXAm5awE14bAUS94kIeyia8woALpEiXuEmXsWNDOh_cK5wMwJoc5s1a2xSpE07vBaymKCZmihC6aKpBArFSKpAjI1x09H1JDAz3Bk0LbbAFo6o5M0j5H9FWvfgBh2VM_Ft3wvuWKJVS5ftLCycPlWEA1kmjod4AuSxYjqGKJ7eCGBvRFHpVCmBnJMfNel855FjnbLsgSyKCwHKksQqCUIJzSjNsV8enpnOOkKQFtAw
PUT https://api.cirro.io/v1/gig-invitations/:id
Parameters
{"data":{"type":"gig-invitations","attributes":{"status":"accepted"},"id":98}}
Name | Description |
---|---|
id required | ID of the gig invitation |
type required | MUST be gig-invitations |
attributes[status] required | Status |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "98",
"type": "gig-invitations",
"links": {
"self": "https://api.cirro.io/api/v1/gig-invitations/98"
},
"attributes": {
"status": "accepted",
"gig-id": 120,
"app-worker-id": 139
}
}
}
GigResults
Create gig result
Request
Endpoint
POST http://api.cirro.io/v1/gig-results
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNDJ9.TxJWxg6YFACwYwtNvdb-0iIp50Pq4NmBO8bmPrOZLZTGzQbAZ2HUNtvbMvypR9d9Q3bFUSzHgKT0ZhvqKAg1irphJzUWZaCDzOzvDxw8FMDzo_8x6vPEvvuw-cnyib8bU7ZTbKW_384pR7SIQOBKNELWGSimhmXIfas3SJWCMdO7w6_bjvckM2PVBtfME2ysefpd8H-G4ZDOuGmX2CHFDVhHNjYTPVlMhoiAgRDuIhCqhl69Opn-uw_epimftGINyOi5570eInyKaBk4UbFyCjWkJb7sGCASw2OZ6xErlr7lA4FuhInmqWhuov9RdKSzSARFOalOMAZwy4kHegswCw
POST http://api.cirro.io/v1/gig-results
Parameters
{"data":{"type":"gig-results","attributes":{"title":"Batman Begins","description":"All right, Mr. DeMille, I'm ready for my closeup.","quantity":2,"multiplier":"1.0","cost-center-data":"{\"customer_id\":\"1234\",\"company\":\"Schinner, Brakus and Ortiz\",\"legal_entity\":\"GmbH\",\"inhouse\":\"no\"}","delivery-date":"2022-06-13T09:14:02.971Z"},"relationships":{"gig-task":{"data":{"type":"gig-tasks","id":12}},"app-worker":{"data":{"type":"app-workers","id":152}}}}}
Name | Description |
---|---|
type required | Should always be set to gig-results . |
attributes[title] required | Title of the gig result |
attributes[description] | Description of the gig result |
attributes[quantity] required | Quantity of completed tasks |
attributes[multiplier] | A factor in the range of 0.0000 - 9.9999 which will be multiplied to the base price for the completed task. Use it to give your payout a boost or a reduction. The end payout is calculated as following: quantity x task.base_price x multiplier . By default multiplier = 1.0 |
attributes[external-customer-id] | DEPRECATED use cost-center-key and cost-center-name instead:You can use this optional field to keep track of COGS and payouts for a customer in your space. |
attributes[cost-center-key] required | A EPAM project code for book keeping in finance. It is required if cost_center_data is not given. |
attributes[cost-center-data] required | A json string containing customer details: customer_id , company , legal_entity and inhouse . It is required if cost_center_key is not given. |
attributes[delivery-date] | When did the worker perform the work, by default it equals to the creation time of the gig result |
relationships[gig-task] required | Associate the gig result to a gig task |
relationships[app-worker] required | Associate the gig result to an app worker |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "7",
"type": "gig-results",
"links": {
"self": "http://api.cirro.io/api/v1/gig-results/7"
},
"attributes": {
"title": "Batman Begins",
"description": "All right, Mr. DeMille, I'm ready for my closeup.",
"quantity": 2,
"multiplier": "1.0",
"external-customer-id": null,
"delivery-date": "2022-06-13",
"cost-center-key": null,
"cost-center-data": {
"company": "Schinner, Brakus and Ortiz",
"inhouse": "no",
"customer_id": "1234",
"legal_entity": "GmbH"
}
}
}
}
GigTasks
Create a gig task
Request
Endpoint
POST https://api.cirro.io/v1/gig-tasks
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNDV9.vLkx2j9UGCaVpe64O-BqCRGCUUBs7obq2NfEhkMaol6eBPqz73FZDXxRRgwmjZfkoM2DPqcutBbau6vxLmi6wgac-ZOpKj5TrzUaJtBucTu9OlMpFLeedvaAxpk3hlN3YuW4GiiQ2L-PQwv816apuiVYQKls2Yk2Hruh4vmB-km2GJW0nJtj_NY_kk1zL5PXINIOsUZvBzPwhWU2hussyhIzfHgA1A41Ju1vUnJZVo-66eZtjgzGIhmnlZUJAYBoPx0sDLBbbI6HfjThR0ajkGBe3jOL3oid5_G1W9xr9KVCBatOcwFxxHfisq-z4pGJJyVUdffMNDT4zjOEVIiLcQ
POST https://api.cirro.io/v1/gig-tasks
Parameters
{"data":{"type":"gig-tasks","attributes":{"title":"All Passion Spent","base-price":400},"relationships":{"gig":{"data":{"type":"gigs","id":"149"}}}}}
Name | Description |
---|---|
type required | MUST be gig-tasks |
attributes[title] required | Title |
attributes[base_price] required | Reward the worker will get after completing the task (in cents, e.g. 100 = 1€) |
relationships[gig] required | Parent gig |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "27",
"type": "gig-tasks",
"links": {
"self": "https://api.cirro.io/api/v1/gig-tasks/27"
},
"attributes": {
"title": "All Passion Spent",
"base-price": 400
}
}
}
Update a gig task
Request
Endpoint
PATCH https://api.cirro.io/v1/gig-tasks/31
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNDZ9.trCAZBicwIGnSCt9bxR_bIrVeshnTCZTKI68L_rmu1d0pKoHSkRZuKUAebX6Zf4EqW5THZNOParXFk0BtNDjUBxnwZxyTvk1pZKudRQZWA8LWlDrqYjrAj2Zwl4nOfPE-Ea6BSA7JjEfj7jxjHc8LvpY5T-CLR4gorRTwc997NnUJkdIDJ5mGivDHDFccFXFL6-J7H4TbXgdHVm8zMYAQJwS8MN-zGIMIykJwpWVTp5A8LWiUs5Os_Kb_YS8SJEgIyHlIPh0037qMPnce2qfsePF4akqFuM5HXPamlVo_-6F9MbZJr9QBp7NT-YfW06puUd71FGJ-7DuPrWZl8S81w
PATCH https://api.cirro.io/v1/gig-tasks/:id
Parameters
{"data":{"type":"gig-tasks","attributes":{"title":"Quo Vadis","base-price":1000},"relationships":{"gig":{"data":{"type":"gigs","id":"157"}}},"id":31}}
Name | Description |
---|---|
id required | ID of the gig task |
type required | MUST be gig-tasks |
attributes[title] | Title |
attributes[base_price] | Reward the worker will get after completing the task (in cents, e.g. 100 = 1€) |
relationships[gig] | Parent gig |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "31",
"type": "gig-tasks",
"links": {
"self": "https://api.cirro.io/api/v1/gig-tasks/31"
},
"attributes": {
"title": "Quo Vadis",
"base-price": 1000
}
}
}
Update a gig task
Request
Endpoint
PUT https://api.cirro.io/v1/gig-tasks/34
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNDd9.oPecyiOZN0OTSyyK1rXsizfx0rn8AZLeF5Ey-UCcjKW7T3yizCXUtbtuB5lDc1L8G8p3Y3U9tlhUpD-_jp_UEOcWg0hEvlAsBpJVw47NDQUxtuUJGa1HH48hqW--Fo_GF7546JOHuXLeImeq2QC62Wd3xV29Fglju5UyUMQa2skFc_9i95_UPAOM3qk1J_wueWGWk4XkUU-tnYa-4X76q_H0MDsmDKoszAZwE2idbZ8nqSTXYh5l288IdWlxAKpKqU-ZnM2dsFsmg7Hg61xKgfAQZb4dQsUnmYi-Y7q3FIAxeLyORsbE2lzxHSb5Pb8eHaLzlRpC_Z51o9cknKWZhg
PUT https://api.cirro.io/v1/gig-tasks/:id
Parameters
{"data":{"type":"gig-tasks","attributes":{"title":"Have His Carcase","base-price":400},"relationships":{"gig":{"data":{"type":"gigs","id":"160"}}},"id":34}}
Name | Description |
---|---|
id required | ID of the gig task |
type required | MUST be gig-tasks |
attributes[title] | Title |
attributes[base_price] | Reward the worker will get after completing the task (in cents, e.g. 100 = 1€) |
relationships[gig] | Parent gig |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "34",
"type": "gig-tasks",
"links": {
"self": "https://api.cirro.io/api/v1/gig-tasks/34"
},
"attributes": {
"title": "Have His Carcase",
"base-price": 400
}
}
}
GigTimeActivities
Create a gig time activity
Request
Endpoint
POST https://api.cirro.io/v1/gig-time-activities
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNDd9.FSKrH3brnojS6bnCoZVpluZrRh6VjV_A1oA0X4bgsMma1v_S9Zdo1ku0U-z2FbYYxkhwuxQeQZl-IXzM1ZvmBWLNcMwCABiLSsxkTG8gSaytFFGmcB2WhHGAtdbCEw2Etld_dzCvLb8wqHqSvXh0QQcQgigNQb-guTBLPu7Ar6uPT5kTnTr7MAJa-GNYhbMa4zd8bcam3duk4vLiIdUtTXpCoSOOZ0_m3nHyy_JqBWlLwbIJIg_C8bkFmC1EBP-xN7VYZg0Kkv8B0BVO-W1ilI77sgqZ8HRHSFbwmM5XarTfSduI6y69CkDh39rHw3rBNitO6m9TAxWdL6Bct_ME4A
POST https://api.cirro.io/v1/gig-time-activities
Parameters
{"data":{"type":"gig-time-activities","attributes":{"date":"2022-06-19","description":"Commodi excepturi et eum.","duration-in-ms":7200000},"relationships":{"gig":{"data":{"type":"gigs","id":"163"}},"app-worker":{"data":{"type":"app-workers","id":"159"}}}}}
Name | Description |
---|---|
type required | MUST be gig-time-activities |
attributes[date] required | Date of the activity |
attributes[description] required | Description |
attributes[duration_in_ms] required | Duration in milliseconds |
relationships[gig] required | Gig the worker worked on |
relationships[app_worker] required | The responsible worker |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "7",
"type": "gig-time-activities",
"links": {
"self": "https://api.cirro.io/api/v1/gig-time-activities/7"
},
"attributes": {
"description": "Commodi excepturi et eum.",
"duration-in-ms": 7200000,
"date": "2022-06-19"
}
}
}
Gigs
Archive a gig with gig results and time activities
Request
Endpoint
POST http://api.cirro.io/v1/bulk/gigs/29/archive
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NDA5OTk0MDB9.ikjkdjx294lj4q5ckSPT7UBfVKXIHRx9Q8eRLMfsB5Ty8sV2UrDNQxsIOv6FiQmRkvHiT4gdNLWdNhll_c7OvvfbXxHbfjYiQsfcnc4HZfvqDObMso7W5h_At1DIJyV1GyfVDFsoDBd2ExAM8CnIuH4c5j7Lru0ZIkRprz_yeLKF9WH81BY4k2Cmo6sE0PMAHOGeYZJWB70ONGG9QxVNspn4G6nKg5vSYayIVjvA4Ty5QhGVmhGW-n7GBy6laskHR2JtMf_oBCZRABs38-7PYERpjd8OTm5ZocxEyYYwyVsvynI_HLDFV2oyr8mzA-FTMvOVStzRN0q44MOYvRSheg
POST http://api.cirro.io/v1/bulk/gigs/:gig_id/archive
Parameters
{"data":{"relationships":{"gig-results":[{"relationships":{"app-worker":{"data":{"id":43}},"gig-task":{"data":{"id":2}}},"title":"The Shawshank Redemption","delivery-date":"2021-12-30T01:00:00.000Z","description":"What we've got here is failure to communicate.","quantity":2,"cost-center-key":"123456"},{"relationships":{"app-worker":{"data":{"id":44}},"gig-task":{"data":{"id":2}}},"title":"Braveheart","delivery-date":"2021-12-30T01:00:00.000Z","description":"Toto, I've got a feeling we're not in Kansas anymore.","quantity":2,"cost-center-key":"123456"}],"gig-time-activities":[{"relationships":{"app-worker":{"data":{"id":43}}},"description":"I love the smell of napalm in the morning.","date":"2022-01-01T01:00:00.000Z","duration-in-ms":360000},{"relationships":{"app-worker":{"data":{"id":44}}},"description":"May the Force be with you.","date":"2022-01-01T01:00:00.000Z","duration-in-ms":360000}]}}}
Name | Description |
---|---|
relationships[gig-results] | Create multiple gig results for the given gig. If the given gig has only 1 gig task, the gig_task_id will be automatically set to this task. Example: [{ relationships: { app-worker: { data: { id: 1 } } }, title: 'Completed Task1', description: 'Thank you for your work!', quantity: 2, multiplier: 2.5 }, ...] |
relationships[gig-time-activities] | Create multiple gig time activities for the given gig. Example: [{ relationships: { app-worker: { data: { id: 1 } } }, description: 'Complete work for gig #1', date: '2020-09-28 11:32:46 UTC', duration_in_ms: 360000 }, ...] |
Response
Content-Type: application/json; charset=utf-8
201 Created
{
"data": {
"id": "29",
"type": "gigs",
"links": {
"self": "/api/v1/gigs/29"
},
"attributes": {
"title": "To Say Nothing of the Dog",
"description": "The orthogonal features, when combined, can explode into complexity.",
"url": "http://haag.com/yen",
"automatic-invites": false,
"invitation-mode": "manual",
"total-seats": 2,
"archive-at": "2022-01-01T01:00:00.000Z",
"end-at": "2022-01-01T01:00:00.000Z",
"archived-at": null,
"start-at": "2022-01-30T01:52:02.000Z",
"extra-mile": false,
"notification-payload": {
},
"invitation-multiplier": 1
},
"relationships": {
"gig-tasks": {
"links": {
"self": "/api/v1/gigs/29/relationships/gig-tasks",
"related": "/api/v1/gigs/29/gig-tasks"
}
},
"gig-results": {
"data": [
{
"type": "gig-results",
"id": "1"
},
{
"type": "gig-results",
"id": "2"
}
]
},
"gig-time-activities": {
"data": [
{
"type": "gig-time-activities",
"id": "1"
},
{
"type": "gig-time-activities",
"id": "2"
}
]
}
}
},
"included": [
{
"id": "1",
"type": "gig-results",
"links": {
"self": "/api/v1/gig-results/1"
},
"attributes": {
"title": "The Shawshank Redemption",
"description": "What we've got here is failure to communicate.",
"quantity": 2,
"multiplier": "1.0",
"external-customer-id": "123456",
"delivery-date": "2021-12-30",
"cost-center-key": "123456",
"cost-center-data": null
}
},
{
"id": "2",
"type": "gig-results",
"links": {
"self": "/api/v1/gig-results/2"
},
"attributes": {
"title": "Braveheart",
"description": "Toto, I've got a feeling we're not in Kansas anymore.",
"quantity": 2,
"multiplier": "1.0",
"external-customer-id": "123456",
"delivery-date": "2021-12-30",
"cost-center-key": "123456",
"cost-center-data": null
}
},
{
"id": "1",
"type": "gig-time-activities",
"links": {
"self": "/api/v1/gig-time-activities/1"
},
"attributes": {
"description": "I love the smell of napalm in the morning.",
"duration-in-ms": 360000,
"date": "2022-01-01"
},
"relationships": {
"gig": {
"data": {
"type": "gigs",
"id": "29"
}
}
}
},
{
"id": "2",
"type": "gig-time-activities",
"links": {
"self": "/api/v1/gig-time-activities/2"
},
"attributes": {
"description": "May the Force be with you.",
"duration-in-ms": 360000,
"date": "2022-01-01"
},
"relationships": {
"gig": {
"data": {
"type": "gigs",
"id": "29"
}
}
}
}
]
}
Attach gig results in bulk
Request
Endpoint
PATCH https://api.cirro.io/v1/gigs/191
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNTR9.UnHr6gxmUN9btI6Hjox3ORF966oDEF1qUoHbbUvorxwilNn6sGNrO4XqpBRJPcjX8OmuXn6uyOY9aEQ-rPeKEdQ-J3EqndTv8HuAGUjg-Y0Y4Rzify1fJGFrdMkvc7iO6gQ1YLG57olH3G_4Z2SkMP_eoP5zlWDlEAhtLKXKVnCzZ_PwCdGxJIQU3K81nlYBv-ls5O9zSaTlPt92hhM7mgsQc9zqARTI3gMAn2dwDZN_zX-mf3nzvX-8CrT8fNJlnmDYnnH-e4p5Eks1nIyPRIicmR422w4Wo1DpgV1do9-M93LMekvOXrtYV8PU9N9P-QPJb_dXIKCAQvWOOKPMWg
PATCH https://api.cirro.io/v1/gigs/:id
Parameters
{"data":{"type":"gigs","attributes":{"title":"Consider Phlebas","description":"The orthogonal features, when combined, can explode into complexity.","url":"http://rosenbaum-barton.io/renna","start-at":"2022-06-14T07:47:40.000Z","end-at":"2022-07-24T14:55:09.000Z","total-seats":5,"automatic-invites":false,"extra-mile":false,"invitation-multiplier":1},"relationships":{"worker-filter":{"data":{"type":"worker-filters","id":"#CFC3A67C2F8AD223"}},"gig-results":{"data":[{"type":"gig-results","id":"#D6FDCE1EE8388B04"},{"type":"gig-results","id":"#F9E87638A2E660EC"}]},"gig-time-activities":{"data":[{"type":"gig-time-activities","id":"#00829E257C9459C4"},{"type":"gig-time-activities","id":"#2BBD01C735420EBD"}]}},"id":191},"included":[{"type":"worker-filters","id":"#CFC3A67C2F8AD223","attributes":{"filter-query":"{}"}},{"type":"gig-results","id":"#D6FDCE1EE8388B04","attributes":{"title":"a","description":"Fasten your seatbelts. It's going to be a bumpy night.","quantity":1,"multiplier":"1.0","external-customer-id":"EPM-CRWD","delivery-date":"2022-06-20","cost-center-key":"EPM-CRWD"},"relationships":{"gig-task":{"data":{"type":"gig-tasks","id":"47"}},"app-worker":{"data":{"type":"app-workers","id":"173"}}}},{"type":"gig-results","id":"#F9E87638A2E660EC","attributes":{"title":"iure","description":"I'm going to make him an offer he can't refuse.","quantity":1,"multiplier":"1.0","external-customer-id":"EPM-CRWD","delivery-date":"2022-06-20","cost-center-key":"EPM-CRWD"},"relationships":{"gig-task":{"data":{"type":"gig-tasks","id":"47"}},"app-worker":{"data":{"type":"app-workers","id":"174"}}}},{"type":"gig-time-activities","id":"#00829E257C9459C4","attributes":{"description":"Repellat omnis aut nulla.","duration-in-ms":7200000,"date":"2022-06-19"},"relationships":{"app-worker":{"data":{"type":"app-workers","id":"173"}}}},{"type":"gig-time-activities","id":"#2BBD01C735420EBD","attributes":{"description":"Animi explicabo illum inventore.","duration-in-ms":7200000,"date":"2022-06-19"},"relationships":{"app-worker":{"data":{"type":"app-workers","id":"174"}}}}]}
Name | Description |
---|---|
id required | ID of the gig |
type required | MUST be gigs |
attributes[title] | Title |
attributes[description] | Description |
attributes[url] | URL |
attributes[start_at] | When to start the gig |
attributes[end_at] | When to end the gig |
attributes[total_seats] | Number of workers allowed |
attributes[automatic_invites] | Auto-invite workers |
attributes[extra_mile] | Report time activities to EPAM extra mile time package |
attributes[invitation_multiplier] | This multiplier x #open seats left = #invitations sent out each wave |
relationships[worker_filter] | A filter for workers |
relationships[gig_tasks] | Gig tasks. At least 1 is needed to start the invitation |
relationships[gig_results] | Results. If the gig has only 1 task, the gig_task_id will point to it |
relationships[gig_time_activities] | Time activities |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "191",
"type": "gigs",
"links": {
"self": "https://api.cirro.io/api/v1/gigs/191"
},
"attributes": {
"title": "Consider Phlebas",
"description": "The orthogonal features, when combined, can explode into complexity.",
"url": "http://rosenbaum-barton.io/renna",
"automatic-invites": false,
"invitation-mode": "manual",
"total-seats": 5,
"archive-at": "2022-07-24T14:55:09.000Z",
"end-at": "2022-07-24T14:55:09.000Z",
"archived-at": null,
"start-at": "2022-06-14T07:47:40.000Z",
"extra-mile": false,
"notification-payload": {
},
"invitation-multiplier": 1
},
"relationships": {
"gig-tasks": {
"links": {
"self": "https://api.cirro.io/api/v1/gigs/191/relationships/gig-tasks",
"related": "https://api.cirro.io/api/v1/gigs/191/gig-tasks"
}
}
}
}
}
Attach gig results in bulk
Request
Endpoint
PUT https://api.cirro.io/v1/gigs/204
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNTh9.a0ziO4654dfjVUB3YMdp0hJJrskhwCkbH7guABIMfE9CS6w9BnkVXxR-jL1PaKUipbMSck-0LoscHou3A2BFEIFqP3s9IDK6tyc-xBupzN2yJOtO7RlwZse13sF5M0EZYZ-mXliFz1uLQCGcjpxPUQYo2OcN6YNNzHo0Q8h9Jh-XdJAHx33a7yL_948AzmLHjM01BwUPmxY88BL0Cm0gY2lHI7RTQepIlCQ5HCF2Pb2P-qCmZdwWJhYUTnwvEu9xvxkjE5J9Clil6_aQlSQPzmAkqupcUjh2pSrA1xFyU2CqhHqsSo7ay2qC8sJFB8taX8gCYWYbYhbrDvab7b5Lmg
PUT https://api.cirro.io/v1/gigs/:id
Parameters
{"data":{"type":"gigs","attributes":{"title":"Vanity Fair","description":"I didn't work hard to make Ruby perfect for everyone, because you feel differently from me. No language can be perfect for everyone. I tried to make Ruby perfect for me, but maybe it's not perfect for you. The perfect language for Guido van Rossum is probably Python.","url":"http://mann.co/jarod","start-at":"2022-06-15T08:45:46.000Z","end-at":"2022-07-20T19:21:09.000Z","total-seats":2,"automatic-invites":false,"extra-mile":false,"invitation-multiplier":1},"relationships":{"worker-filter":{"data":{"type":"worker-filters","id":"#0E1B574F0D445985"}},"gig-results":{"data":[{"type":"gig-results","id":"#1135FF69C7F2019E"},{"type":"gig-results","id":"#3820670B81A3F6C6"}]},"gig-time-activities":{"data":[{"type":"gig-time-activities","id":"#C0DA8F345A51DFEF"},{"type":"gig-time-activities","id":"#EBF536D614FF8707"}]}},"id":204},"included":[{"type":"worker-filters","id":"#0E1B574F0D445985","attributes":{"filter-query":"{}"}},{"type":"gig-results","id":"#1135FF69C7F2019E","attributes":{"title":"inventore","description":"All right, Mr. DeMille, I'm ready for my closeup.","quantity":1,"multiplier":"1.0","external-customer-id":"EPM-CRWD","delivery-date":"2022-06-20","cost-center-key":"EPM-CRWD"},"relationships":{"gig-task":{"data":{"type":"gig-tasks","id":"59"}},"app-worker":{"data":{"type":"app-workers","id":"189"}}}},{"type":"gig-results","id":"#3820670B81A3F6C6","attributes":{"title":"est","description":"Here's looking at you, kid.","quantity":1,"multiplier":"1.0","external-customer-id":"EPM-CRWD","delivery-date":"2022-06-20","cost-center-key":"EPM-CRWD"},"relationships":{"gig-task":{"data":{"type":"gig-tasks","id":"59"}},"app-worker":{"data":{"type":"app-workers","id":"190"}}}},{"type":"gig-time-activities","id":"#C0DA8F345A51DFEF","attributes":{"description":"Quis esse deserunt fugiat.","duration-in-ms":7200000,"date":"2022-06-19"},"relationships":{"app-worker":{"data":{"type":"app-workers","id":"189"}}}},{"type":"gig-time-activities","id":"#EBF536D614FF8707","attributes":{"description":"Qui placeat eum ex.","duration-in-ms":7200000,"date":"2022-06-19"},"relationships":{"app-worker":{"data":{"type":"app-workers","id":"190"}}}}]}
Name | Description |
---|---|
id required | ID of the gig |
type required | MUST be gigs |
attributes[title] | Title |
attributes[description] | Description |
attributes[url] | URL |
attributes[start_at] | When to start the gig |
attributes[end_at] | When to end the gig |
attributes[total_seats] | Number of workers allowed |
attributes[automatic_invites] | Auto-invite workers |
attributes[extra_mile] | Report time activities to EPAM extra mile time package |
attributes[invitation_multiplier] | This multiplier x #open seats left = #invitations sent out each wave |
relationships[worker_filter] | A filter for workers |
relationships[gig_tasks] | Gig tasks. At least 1 is needed to start the invitation |
relationships[gig_results] | Results. If the gig has only 1 task, the gig_task_id will point to it |
relationships[gig_time_activities] | Time activities |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "204",
"type": "gigs",
"links": {
"self": "https://api.cirro.io/api/v1/gigs/204"
},
"attributes": {
"title": "Vanity Fair",
"description": "I didn't work hard to make Ruby perfect for everyone, because you feel differently from me. No language can be perfect for everyone. I tried to make Ruby perfect for me, but maybe it's not perfect for you. The perfect language for Guido van Rossum is probably Python.",
"url": "http://mann.co/jarod",
"automatic-invites": false,
"invitation-mode": "manual",
"total-seats": 2,
"archive-at": "2022-07-20T19:21:09.000Z",
"end-at": "2022-07-20T19:21:09.000Z",
"archived-at": null,
"start-at": "2022-06-15T08:45:46.000Z",
"extra-mile": false,
"notification-payload": {
},
"invitation-multiplier": 1
},
"relationships": {
"gig-tasks": {
"links": {
"self": "https://api.cirro.io/api/v1/gigs/204/relationships/gig-tasks",
"related": "https://api.cirro.io/api/v1/gigs/204/gig-tasks"
}
}
}
}
}
Create a gig
Request
Endpoint
POST https://api.cirro.io/v1/gigs
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNTB9.8LfV8oG316UDidTeNUbKCwPg9_NhvNLPlgkZOnMoYRhFt0wCAfC2tPJ173gdvfnMSvleqw54RCDx5mNo0xv3hSf53TpnMfoj8Wy26lz7CDPyyNCdMqcYXlSxd_guSFpX05CEUb6bsREi4emLwmDjQCWHqRx5Q0uIqoBBZGQsqNdu0VkdAK5cw9HmTRrVZFmKik-BYs0ysfGQVDmJDvJxfT0tLgVc8bEGfFgd_cbOX8zc0yjuwCs69CQJTvH4tEm72jhpLKfkacBDm6cvB9hg9NM8Jfo9HwJUxQdfNitNskMHSaQ7aBCmt2CU5Zy2cgIfjJ0V2Hp6osqDuIwth6mkIA
POST https://api.cirro.io/v1/gigs
Parameters
{"data":{"type":"gigs","attributes":{"title":"Arms and the Man","description":"Ruby inherited the Perl philosophy of having more than one way to do the same thing. I inherited that philosophy from Larry Wall, who is my hero actually. I want to make Ruby users free. I want to give them the freedom to choose.","url":"http://yost-walker.co/daren","start-at":"2022-06-04T03:35:02.000Z","end-at":"2022-07-20T05:20:33.000Z","total-seats":5,"automatic-invites":false,"extra-mile":false,"notification-payload":{},"invitation-multiplier":1},"relationships":{"worker-filter":{"data":{"type":"worker-filters","id":"174"}}}}}
Name | Description |
---|---|
type required | MUST be gigs |
attributes[title] required | Title |
attributes[description] required | Description |
attributes[url] required | URL |
attributes[start_at] | When to start the gig |
attributes[end_at] required | When to end the gig |
attributes[total_seats] required | Number of workers allowed |
attributes[automatic_invites] required | Auto-invite workers |
attributes[extra_mile] | Report activities to EPAM extra mile time package |
attributes[notification_payload] | Data payload can be used later to populate notifications |
attributes[invitation_multiplier] | This multiplier x #open seats left = #invitations sent out each wave |
relationships[worker_filter] required | A filter for workers |
relationships[gig_tasks] | Gig tasks. At least 1 is needed to start the invitation |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "173",
"type": "gigs",
"links": {
"self": "https://api.cirro.io/api/v1/gigs/173"
},
"attributes": {
"title": "Arms and the Man",
"description": "Ruby inherited the Perl philosophy of having more than one way to do the same thing. I inherited that philosophy from Larry Wall, who is my hero actually. I want to make Ruby users free. I want to give them the freedom to choose.",
"url": "http://yost-walker.co/daren",
"automatic-invites": false,
"invitation-mode": "manual",
"total-seats": 5,
"archive-at": "2022-07-20T05:20:33.000Z",
"end-at": "2022-07-20T05:20:33.000Z",
"archived-at": null,
"start-at": "2022-06-04T03:35:02.000Z",
"extra-mile": false,
"notification-payload": {
},
"invitation-multiplier": 1
},
"relationships": {
"gig-tasks": {
"links": {
"self": "https://api.cirro.io/api/v1/gigs/173/relationships/gig-tasks",
"related": "https://api.cirro.io/api/v1/gigs/173/gig-tasks"
}
}
}
}
}
Create a gig with tasks
Request
Endpoint
POST https://api.cirro.io/v1/gigs
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNTF9.j7pVpPVxSu1cF_QEZKCF9JWpOYVVS1kuC06P9yXNfG13YndA2DRE5jZAn5ZP5j-gj8W6M9p7sKB0VbnwrQiM64_8qVAPpM4Y9Te8k_cTlVXqUylBar5Ykc9Vt7FbJncypocNrA9FbloFw8tu8NeEsjwVn9EQmGN2z3fTJr7g8SpD6dslLQdPIisaBfwg5AogHyEy4EjRVRXZGhUbfOkMVy6CcfriRw4kGYPYHTbd14KYHUYPONkRMh2_80uT77kwDwSuFNCmnpEyaXbto4IflkEdG-_rgAYFT_z1qxUjcR7nQHJDM_ASGkjrYTDJSDqMtdRng0h6TB-9kBTyme1d7g
POST https://api.cirro.io/v1/gigs
Parameters
{"data":{"type":"gigs","attributes":{"title":"I Sing the Body Electric","description":"Sometimes people jot down pseudo-code on paper. If that pseudo-code runs directly on their computers, its best, isn't it? Ruby tries to be like that, like pseudo-code that runs. Python people say that too.","url":"http://kunze-langosh.io/xavier_langosh","start-at":"2022-06-12T08:31:52.000Z","end-at":"2022-07-10T21:56:40.000Z","total-seats":5,"automatic-invites":false,"extra-mile":false,"notification-payload":{},"invitation-multiplier":1},"relationships":{"worker-filter":{"data":{"type":"worker-filters","id":"182"}},"gig-tasks":{"data":[{"type":"gig-tasks","id":"#D5AB803640639284"},{"type":"gig-tasks","id":"#FC462BD01A117BAD"}]}}},"included":[{"type":"gig-tasks","id":"#D5AB803640639284","attributes":{"title":"This Lime Tree Bower","base-price":700}},{"type":"gig-tasks","id":"#FC462BD01A117BAD","attributes":{"title":"The Wind's Twelve Quarters","base-price":600}}]}
Name | Description |
---|---|
type required | MUST be gigs |
attributes[title] required | Title |
attributes[description] required | Description |
attributes[url] required | URL |
attributes[start_at] | When to start the gig |
attributes[end_at] required | When to end the gig |
attributes[total_seats] required | Number of workers allowed |
attributes[automatic_invites] required | Auto-invite workers |
attributes[extra_mile] | Report activities to EPAM extra mile time package |
attributes[notification_payload] | Data payload can be used later to populate notifications |
attributes[invitation_multiplier] | This multiplier x #open seats left = #invitations sent out each wave |
relationships[worker_filter] required | A filter for workers |
relationships[gig_tasks] | Gig tasks. At least 1 is needed to start the invitation |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "177",
"type": "gigs",
"links": {
"self": "https://api.cirro.io/api/v1/gigs/177"
},
"attributes": {
"title": "I Sing the Body Electric",
"description": "Sometimes people jot down pseudo-code on paper. If that pseudo-code runs directly on their computers, its best, isn't it? Ruby tries to be like that, like pseudo-code that runs. Python people say that too.",
"url": "http://kunze-langosh.io/xavier_langosh",
"automatic-invites": false,
"invitation-mode": "manual",
"total-seats": 5,
"archive-at": "2022-07-10T21:56:40.000Z",
"end-at": "2022-07-10T21:56:40.000Z",
"archived-at": null,
"start-at": "2022-06-12T08:31:52.000Z",
"extra-mile": false,
"notification-payload": {
},
"invitation-multiplier": 1
},
"relationships": {
"gig-tasks": {
"links": {
"self": "https://api.cirro.io/api/v1/gigs/177/relationships/gig-tasks",
"related": "https://api.cirro.io/api/v1/gigs/177/gig-tasks"
}
}
}
}
}
Create a gig with tasks and worker filter
Request
Endpoint
POST http://api.cirro.io/v1/bulk/gigs
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NDA5OTk0MDB9.YUWua6s9ffp3SBPM9KXDUhNB8Mb0PiZ3n2L8mYGn2KTn4S_3PsdyGhQ5kdYq8_dA4w42yKbnzEH1VLEXfOzpWrJ-AI5x9bpVz6_WyHy6vtp8cVrXikDxAvnTfK7w77PUXPUyfY6zi3oYS-qYAYjQorcf6y5kTO9wS2laJJLAeAMRh3ry4lTnvW0ybmGrkRs4FHkRA-xogxm9X192lRoboy0B_F_p-J7N2MDle3IqS_eTysu4U6KTohwhJIskYy-m4keZV_5y5v2N4B7ObTe0vtgjQqW6_5cy12PTTFuG7yxYN-L0bH-Fx3Z8I0w1zk765wAjaEcuw1z6tg_hl3kaGg
POST http://api.cirro.io/v1/bulk/gigs
Parameters
{"data":{"attributes":{"title":"Life of Brian","description":"Frankly, my dear, I don’t give a damn.","url":"http://mueller.info/sabina_gorczany","automatic-invites":true,"extra-mile":true,"end-at":"2022-01-31T01:00:00.000Z","start-at":"2022-01-01T01:00:00.000Z","total-seats":5,"notification-payload":{"project-title":"Sample IO"}},"relationships":{"worker-filter":{"filter-query":"{ \"size.h\": { \"$lt\": 15 }, \"size.uom\": \"in\", \"status\": \"D\" }"},"gig-tasks":[{"title":"No Country for Old Men","base-price":300},{"title":"The Help","base-price":100}]}}}
Name | Description |
---|---|
attributes[title] | Title of the gig |
attributes[description] | More details about the gig |
attributes[url] | Where to find the gig |
attributes[automatic-invites] | Whether to invite workers automatically |
attributes[invitation-mode] | Whether to invite workers automatically, allowed values: ["auto", "manual"], by default manual |
attributes[extra-mile] | Whether to log time activities inside this gig to the epam extra mile time package |
attributes[end-at] | When to end the gig |
attributes[start-at] | When to start the gig. By default start at is time now |
attributes[total-seats] | Allowed total number of accepted worker invitations |
attributes[notification-payload] | Data payload can be used later to populate notifications |
relationships[worker-filter] required | Associate the gig to a worker filter. Example: { filter-query: '{ "age": { "$lt": 50 } }' } |
relationships[gig-tasks] required | Specify tasks inside the gig. We will not start invitation unless there is at least 1 gig task present. Example: [{ title: 'Task1', base-price: 100 }, { title: 'Task2', base-price: 200 }] |
Response
Content-Type: application/json; charset=utf-8
201 Created
{
"data": {
"id": "35",
"type": "gigs",
"links": {
"self": "/api/v1/gigs/35"
},
"attributes": {
"title": "Life of Brian",
"description": "Frankly, my dear, I don’t give a damn.",
"url": "http://mueller.info/sabina_gorczany",
"automatic-invites": true,
"invitation-mode": "auto",
"total-seats": 5,
"archive-at": "2022-01-31T01:00:00.000Z",
"end-at": "2022-01-31T01:00:00.000Z",
"archived-at": null,
"start-at": "2022-01-01T01:00:00.000Z",
"extra-mile": true,
"notification-payload": {
"project_title": "Sample IO"
},
"invitation-multiplier": 1
},
"relationships": {
"worker-filter": {
"data": {
"type": "worker-filters",
"id": "35"
}
},
"gig-tasks": {
"links": {
"self": "/api/v1/gigs/35/relationships/gig-tasks",
"related": "/api/v1/gigs/35/gig-tasks"
},
"data": [
{
"type": "gig-tasks",
"id": "10"
},
{
"type": "gig-tasks",
"id": "11"
}
]
}
}
},
"included": [
{
"id": "10",
"type": "gig-tasks",
"links": {
"self": "/api/v1/gig-tasks/10"
},
"attributes": {
"title": "No Country for Old Men",
"base-price": 300
},
"relationships": {
"gig": {
"data": {
"type": "gigs",
"id": "35"
}
}
}
},
{
"id": "11",
"type": "gig-tasks",
"links": {
"self": "/api/v1/gig-tasks/11"
},
"attributes": {
"title": "The Help",
"base-price": 100
},
"relationships": {
"gig": {
"data": {
"type": "gigs",
"id": "35"
}
}
}
},
{
"id": "35",
"type": "worker-filters",
"links": {
"self": "/api/v1/worker-filters/35"
},
"attributes": {
"filter-query": "{ \"size.h\": { \"$lt\": 15 }, \"size.uom\": \"in\", \"status\": \"D\" }"
}
}
]
}
Delete a gig
Request
Endpoint
DELETE https://api.cirro.io/v1/gigs/212
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjJ9.ncdRTOEnaebDSLOki2QtoVey0zC5i4nSGANXfiyfCup6Krrizlu8v1XZ1GAtvPHmiuC_HTYYQziEXXfsbL43fm-9PxcAgHuN041XgrLvT_bmBgQYWmPPuJdWezJPcohKi8s9Y5zZDFDQeyojVXuuVc6KvzLQHWJ-Mb28-wPKnH3XEWtZ6VQYg7EhU_2j98SuiE8BwDJujFx6lx2hj87vvu_zEiK19U4gDl7mus2555Ifcr0CvCib6wlMBXwpmXxeauImkGAhveUBUrrlrUJ09mHkXYBdoXS7jLrtIJZOmzSBUl2b9Ra5FLH2BeTVSlVi58FJw4f-IsxW9U9nJ_Q3xw
DELETE https://api.cirro.io/v1/gigs/:id
Parameters
Name | Description |
---|---|
id required | ID of the gig |
Response
204 No Content
Get a gig
Request
Endpoint
GET https://api.cirro.io/v1/gigs/184
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNTN9.REedHEgblBUZlO7sMKun7UwjxAKp4NAI6ifOJR2vL10uJCLwqVhSSTACGZvJbtXCPLhmEb73iMqcwQTgUumtAEGaw101Rns2ciJqolLYusp1ecJBlI3CnZQ4S4-86W3nL0p26JOdhFHPVBLI8dXZELdgpNQ4kExWvzeZGnvECBs-PssGCdJnbg1lEfAEwEzAz7_4Ga-r3cdlZHgbrFGsqmNqNToHMBcYs_BK8cSU7PkyRaifbA9Gw_wBT5kkR5PpWAVYuSuLKMmDoUWfZ_hw2Ir864BATiOxkpXHC9IM-SRf_HR72hB5Rft97G4ew3wKF2SmhCytL0RikAJAJUVnWQ
GET https://api.cirro.io/v1/gigs/:id
Parameters
Name | Description |
---|---|
id required | ID of the gig |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "184",
"type": "gigs",
"links": {
"self": "https://api.cirro.io/api/v1/gigs/184"
},
"attributes": {
"title": "Look to Windward",
"description": "I believe consistency and orthogonality are tools of design, not the primary goal in design.",
"url": "http://jaskolski.co/cortney",
"automatic-invites": false,
"invitation-mode": "manual",
"total-seats": 4,
"archive-at": "2022-07-03T19:17:42.000Z",
"end-at": "2022-07-03T19:17:42.000Z",
"archived-at": null,
"start-at": "2022-06-05T15:26:16.000Z",
"extra-mile": false,
"notification-payload": {
},
"invitation-multiplier": 1
},
"relationships": {
"gig-tasks": {
"links": {
"self": "https://api.cirro.io/api/v1/gigs/184/relationships/gig-tasks",
"related": "https://api.cirro.io/api/v1/gigs/184/gig-tasks"
}
}
}
}
}
Update a gig
Request
Endpoint
PATCH https://api.cirro.io/v1/gigs/186
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNTN9.kVOlYzNqJT63DsngM7rz4V7i5G_ES-Xytou1nD6-oFGZwenzOWHD7U4RrSIjFsgzVt-OkAezUqi5UtCFIksVPk4EKJmVarVQOxlG-56jeR75mG0SDCbWQQbgAhYMUIBMzCFilqumvOELLSlFnGF-zZuofHSrKAPYCiXxJvso-T_OtWooiMIDAwsaG8TCnozoaU1wPu4pXxLAdpE-VSP5vlAOKHNyHRUXd9to4vYhvR8GBMoC8knqD7kp6hTuQ1tjRtpkLmxpRCB9q4B6K685L4GA4E0IP3hnmwfWU-jqyAILILh4ta931xHbfsE8KRM-CMNu71LhQsXzn6iDqJQzuA
PATCH https://api.cirro.io/v1/gigs/:id
Parameters
{"data":{"type":"gigs","attributes":{"title":"Behold the Man","description":"From the viewpoint of what you can do, therefore, languages do differ - but the differences are limited. For example, Python and Ruby provide almost the same power to the programmer.","url":"http://marvin-bashirian.io/blossom.conroy","start-at":"2022-06-20T23:03:41.000Z","end-at":"2022-07-01T06:38:25.000Z","total-seats":1,"automatic-invites":false,"extra-mile":false,"invitation-multiplier":1},"relationships":{},"id":186}}
Name | Description |
---|---|
id required | ID of the gig |
type required | MUST be gigs |
attributes[title] | Title |
attributes[description] | Description |
attributes[url] | URL |
attributes[start_at] | When to start the gig |
attributes[end_at] | When to end the gig |
attributes[total_seats] | Number of workers allowed |
attributes[automatic_invites] | Auto-invite workers |
attributes[extra_mile] | Report time activities to EPAM extra mile time package |
attributes[invitation_multiplier] | This multiplier x #open seats left = #invitations sent out each wave |
relationships[worker_filter] | A filter for workers |
relationships[gig_tasks] | Gig tasks. At least 1 is needed to start the invitation |
relationships[gig_results] | Results. If the gig has only 1 task, the gig_task_id will point to it |
relationships[gig_time_activities] | Time activities |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "186",
"type": "gigs",
"links": {
"self": "https://api.cirro.io/api/v1/gigs/186"
},
"attributes": {
"title": "Behold the Man",
"description": "From the viewpoint of what you can do, therefore, languages do differ - but the differences are limited. For example, Python and Ruby provide almost the same power to the programmer.",
"url": "http://marvin-bashirian.io/blossom.conroy",
"automatic-invites": false,
"invitation-mode": "manual",
"total-seats": 1,
"archive-at": "2022-07-01T06:38:25.000Z",
"end-at": "2022-07-01T06:38:25.000Z",
"archived-at": null,
"start-at": "2022-06-20T23:03:41.000Z",
"extra-mile": false,
"notification-payload": {
},
"invitation-multiplier": 1
},
"relationships": {
"gig-tasks": {
"links": {
"self": "https://api.cirro.io/api/v1/gigs/186/relationships/gig-tasks",
"related": "https://api.cirro.io/api/v1/gigs/186/gig-tasks"
}
}
}
}
}
Update a gig
Request
Endpoint
PUT https://api.cirro.io/v1/gigs/199
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNTd9.gM3CFSxYkVHgIXDgh4yzcaQ1aqfRRUcskZFAfP0T0-hXmRfgvU0fwKGnXG96-GcbcmcNWomeURu6DqYKxun6T_77IfsvfgdHdedxCAsAKrU3VIlBuzg75AM8tPmXG9rCEO3Sr7YIkqnjPHaNvjs3PsF_zc-Nlr-Akb-ch1hhOky_FndDa_mpbfatzd3aBkfHhzkT-2SRmxXwm1PvCUvnQ5fkISwX_3Ufva6CcexN79DlfMWEGqBNVecABfLhB_QtxiOwTjTnMYbo9uvXgJnU2zyB9Y_4p6dS_rfxdxeQDUZJaO_1ma-YstLDcThHLZK3GmbN177QcCE7jkOFlecPug
PUT https://api.cirro.io/v1/gigs/:id
Parameters
{"data":{"type":"gigs","attributes":{"title":"Rosemary Sutcliff","description":"Smart people underestimate the ordinarity of ordinary people.","url":"http://streich.co/kim","start-at":"2022-06-26T07:58:47.000Z","end-at":"2022-07-04T17:22:27.000Z","total-seats":5,"automatic-invites":false,"extra-mile":false,"invitation-multiplier":1},"relationships":{},"id":199}}
Name | Description |
---|---|
id required | ID of the gig |
type required | MUST be gigs |
attributes[title] | Title |
attributes[description] | Description |
attributes[url] | URL |
attributes[start_at] | When to start the gig |
attributes[end_at] | When to end the gig |
attributes[total_seats] | Number of workers allowed |
attributes[automatic_invites] | Auto-invite workers |
attributes[extra_mile] | Report time activities to EPAM extra mile time package |
attributes[invitation_multiplier] | This multiplier x #open seats left = #invitations sent out each wave |
relationships[worker_filter] | A filter for workers |
relationships[gig_tasks] | Gig tasks. At least 1 is needed to start the invitation |
relationships[gig_results] | Results. If the gig has only 1 task, the gig_task_id will point to it |
relationships[gig_time_activities] | Time activities |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "199",
"type": "gigs",
"links": {
"self": "https://api.cirro.io/api/v1/gigs/199"
},
"attributes": {
"title": "Rosemary Sutcliff",
"description": "Smart people underestimate the ordinarity of ordinary people.",
"url": "http://streich.co/kim",
"automatic-invites": false,
"invitation-mode": "manual",
"total-seats": 5,
"archive-at": "2022-07-04T17:22:27.000Z",
"end-at": "2022-07-04T17:22:27.000Z",
"archived-at": null,
"start-at": "2022-06-26T07:58:47.000Z",
"extra-mile": false,
"notification-payload": {
},
"invitation-multiplier": 1
},
"relationships": {
"gig-tasks": {
"links": {
"self": "https://api.cirro.io/api/v1/gigs/199/relationships/gig-tasks",
"related": "https://api.cirro.io/api/v1/gigs/199/gig-tasks"
}
}
}
}
}
if only one gig task existed
Request
Endpoint
POST http://api.cirro.io/v1/bulk/gigs/31/archive
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NDA5OTk0MDB9.jTZJPBFE6upFcLutUE1PvpdSUqOh8EvV75udZYR3pNDM7FcZpMgTt5J5SHBMMtTlligxz888YNacTDx3-ZEbHVj5nZuaiHwewPLKDClhfUNHW7B6n74HVcldoq78Y0O5yUDKyOKhd8xN4UawNxmhqKjfHdSxMFadvr26Fkjm6EVe80fUuOVmdIfOzjktfzWqoGEAGG5gFFAczZBBD2ghVfgGFND_YcwiKkCPENHD0Lbqcr_-W3XSgNmoL-oHUbVzy7-pPt6E0g5bptTa3JJ_VSBkmanWTg922YRCo5oGQyFP9VG8HcS752RSYSvbC-axT8Q7TwILCzKeplmbNrIz1A
POST http://api.cirro.io/v1/bulk/gigs/:gig_id/archive
Parameters
{"data":{"relationships":{"gig-results":[{"relationships":{"app-worker":{"data":{"id":47}}},"title":"The Green Mile","description":"All right, Mr. DeMille, I'm ready for my closeup.","cost-center-key":"123456","quantity":2},{"relationships":{"app-worker":{"data":{"id":48}}},"title":"The Green Mile","description":"Frankly, my dear, I don’t give a damn.","cost-center-key":"123456","quantity":2}],"gig-time-activities":[{"relationships":{"app-worker":{"data":{"id":47}}},"description":"What we've got here is failure to communicate.","date":"2022-01-01T01:00:00.000Z","duration-in-ms":360000},{"relationships":{"app-worker":{"data":{"id":48}}},"description":"Toto, I've got a feeling we're not in Kansas anymore.","date":"2022-01-01T01:00:00.000Z","duration-in-ms":360000}]}}}
Name | Description |
---|---|
relationships[gig-results] | Create multiple gig results for the given gig. If the given gig has only 1 gig task, the gig_task_id will be automatically set to this task. Example: [{ relationships: { app-worker: { data: { id: 1 } } }, title: 'Completed Task1', description: 'Thank you for your work!', quantity: 2, multiplier: 2.5 }, ...] |
relationships[gig-time-activities] | Create multiple gig time activities for the given gig. Example: [{ relationships: { app-worker: { data: { id: 1 } } }, description: 'Complete work for gig #1', date: '2020-09-28 11:32:46 UTC', duration_in_ms: 360000 }, ...] |
Response
Content-Type: application/json; charset=utf-8
201 Created
{
"data": {
"id": "31",
"type": "gigs",
"links": {
"self": "/api/v1/gigs/31"
},
"attributes": {
"title": "A Scanner Darkly",
"description": "I believe consistency and orthogonality are tools of design, not the primary goal in design.",
"url": "http://satterfield.net/stan",
"automatic-invites": false,
"invitation-mode": "manual",
"total-seats": 1,
"archive-at": "2022-01-01T01:00:00.000Z",
"end-at": "2022-01-01T01:00:00.000Z",
"archived-at": null,
"start-at": "2022-01-21T06:15:52.000Z",
"extra-mile": false,
"notification-payload": {
},
"invitation-multiplier": 1
},
"relationships": {
"gig-tasks": {
"links": {
"self": "/api/v1/gigs/31/relationships/gig-tasks",
"related": "/api/v1/gigs/31/gig-tasks"
}
},
"gig-results": {
"data": [
{
"type": "gig-results",
"id": "5"
},
{
"type": "gig-results",
"id": "6"
}
]
},
"gig-time-activities": {
"data": [
{
"type": "gig-time-activities",
"id": "5"
},
{
"type": "gig-time-activities",
"id": "6"
}
]
}
}
},
"included": [
{
"id": "5",
"type": "gig-results",
"links": {
"self": "/api/v1/gig-results/5"
},
"attributes": {
"title": "The Green Mile",
"description": "All right, Mr. DeMille, I'm ready for my closeup.",
"quantity": 2,
"multiplier": "1.0",
"external-customer-id": "123456",
"delivery-date": "2022-01-01",
"cost-center-key": "123456",
"cost-center-data": null
}
},
{
"id": "6",
"type": "gig-results",
"links": {
"self": "/api/v1/gig-results/6"
},
"attributes": {
"title": "The Green Mile",
"description": "Frankly, my dear, I don’t give a damn.",
"quantity": 2,
"multiplier": "1.0",
"external-customer-id": "123456",
"delivery-date": "2022-01-01",
"cost-center-key": "123456",
"cost-center-data": null
}
},
{
"id": "5",
"type": "gig-time-activities",
"links": {
"self": "/api/v1/gig-time-activities/5"
},
"attributes": {
"description": "What we've got here is failure to communicate.",
"duration-in-ms": 360000,
"date": "2022-01-01"
},
"relationships": {
"gig": {
"data": {
"type": "gigs",
"id": "31"
}
}
}
},
{
"id": "6",
"type": "gig-time-activities",
"links": {
"self": "/api/v1/gig-time-activities/6"
},
"attributes": {
"description": "Toto, I've got a feeling we're not in Kansas anymore.",
"duration-in-ms": 360000,
"date": "2022-01-01"
},
"relationships": {
"gig": {
"data": {
"type": "gigs",
"id": "31"
}
}
}
}
]
}
NotificationsBroadcasts
create notifications-broadcast
Request
Endpoint
POST http://api.cirro.io/v1/notifications-broadcasts
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjN9.HHi4wXpCYb7PCZb_4PVgTfrwjLskzTmBN2j1ibm8d5yFqpIpnBxJGe1V6ReplZOfAFrcGd2BQ98Fg_Fw6o4pwr262JWRmFK2jRSM1_YvdaDNCIpRv3v2zQgQH5y_mp4T56WhiDv2Fbp44yRmDXs7A0WdLTzmNpIK2FNn107OalafV2QWcLZeSWFaHztxM3VOU-1lI5lfUbbJCYTtdEuuX8azLTWNv748UpcDRFvR5FIMTSCSJelKD8pUQS-T8_0O-B5rQ2COvw8_7N_GafqrjK50fB6paBl-aUrcTZdiV_ZHcvfOBkwrlZNtHypr7us3scqiLyTvcrBcUtDEiXpknQ
POST http://api.cirro.io/v1/notifications-broadcasts
Parameters
{"data":{"type":"notifications-broadcasts","attributes":{"payload":{"key":"value"}},"relationships":{"channel":{"data":{"type":"notifications-channels","id":5}},"worker-filter":{"data":{"type":"worker-filters","id":240}}}}}
Name | Description |
---|---|
type required | Should always be set to notifications-broadcasts . |
attributes[payload] required | Payload of the notifications broadcast to pass to the channel templates in order to render them |
attributes[app-user-ids] | One of the 3 ways to specify the recipient(s) of the notification. |
attributes[app-worker-ids] | One of the 3 ways to specify the recipient(s) of the notification. |
relationships[channel] required | Associate the broadcast to a notifications channel |
relationships[worker-filter] | One of the 3 ways to specify the recipient(s) of the notification. |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "1",
"type": "notifications-broadcasts",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-broadcasts/1"
},
"attributes": {
"payload": {
"key": "value"
},
"app-user-ids": [
],
"app-worker-ids": [
]
}
}
}
create notifications-broadcast
Request
Endpoint
POST http://api.cirro.io/v1/notifications-broadcasts
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjN9.MTpc5Se_Dw6uQxXg5i1A0IiCL2NCgVdoJCqJdZd_spWAGhJtIgBWqdF6DBjc6fpCJrevTnRCdxHFGX7nKyMzcYh6oQKbpsak52vTvedc4HgZhLzIGHsKdPyBrc7Etbr-5BI357cW7AYC1BLIYRRh8qG_IeP2FSBDweW1cRBzlrbT0CZV6NNZElp8tYUwhzCBtXwaLQ0NdOCf58SAcC_JZOvoXuuMor4psQ3CCx_EtAEDjZk-K_ENTWuLXl4SJALpF7gwCrSgeMnno40Us4VzcfCg7XgClBSPzPQPGz8DCuqD25LBJFsEq9N-5-B6R9pdh_O29cg2Iwzl3Ur-a56Tbg
POST http://api.cirro.io/v1/notifications-broadcasts
Parameters
{"data":{"type":"notifications-broadcasts","attributes":{"payload":{"key":"value"},"app-user-ids":[294,295]},"relationships":{"channel":{"data":{"type":"notifications-channels","id":6}}}}}
Name | Description |
---|---|
type required | Should always be set to notifications-broadcasts . |
attributes[payload] required | Payload of the notifications broadcast to pass to the channel templates in order to render them |
attributes[app-user-ids] | One of the 3 ways to specify the recipient(s) of the notification. |
attributes[app-worker-ids] | One of the 3 ways to specify the recipient(s) of the notification. |
relationships[channel] required | Associate the broadcast to a notifications channel |
relationships[worker-filter] | One of the 3 ways to specify the recipient(s) of the notification. |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "2",
"type": "notifications-broadcasts",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-broadcasts/2"
},
"attributes": {
"payload": {
"key": "value"
},
"app-user-ids": [
294,
295
],
"app-worker-ids": [
]
}
}
}
create notifications-broadcast
Request
Endpoint
POST http://api.cirro.io/v1/notifications-broadcasts
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjN9.zURC_XItkW_LDFVfFs2RtDJ80ri0NIUda-PAK_IJCVKeaxzbjT54YRToQ8dABs6RAzDEUan9vbefwd70sljH-K3aOxdkuiWhBWIwKxL2yAtryA9-P2yDvFme0zuz-X3lCTfplzCsPWBlr3mNx9NVFUD5mYQ0p2PVqH81J0ehsEsKKwVEsS22dp6DRoxOHeJXqZ8CIV0GDkJB0rr6Kn8cpCrIyOux2ji_q-_KiL-SSyqIf6MBZeedFXsuFH8Q_s_dtqzmHEwT6SPMILfmlHjgPOfw_H21HwqAKWR27snQc6IMc1gJkyyTrqNFRu5AIygBDRFYzU6BqCw-HEREGrUSqw
POST http://api.cirro.io/v1/notifications-broadcasts
Parameters
{"data":{"type":"notifications-broadcasts","attributes":{"payload":[{"296":{"key":296}},{"297":{"key":297}}],"app-user-ids":[296,297]},"relationships":{"channel":{"data":{"type":"notifications-channels","id":7}}}}}
Name | Description |
---|---|
type required | Should always be set to notifications-broadcasts . |
attributes[payload] required | Payload of the notifications broadcast to pass to the channel templates in order to render them |
attributes[app-user-ids] | One of the 3 ways to specify the recipient(s) of the notification. |
attributes[app-worker-ids] | One of the 3 ways to specify the recipient(s) of the notification. |
relationships[channel] required | Associate the broadcast to a notifications channel |
relationships[worker-filter] | One of the 3 ways to specify the recipient(s) of the notification. |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "3",
"type": "notifications-broadcasts",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-broadcasts/3"
},
"attributes": {
"payload": [
{
"296": {
"key": 296
}
},
{
"297": {
"key": 297
}
}
],
"app-user-ids": [
296,
297
],
"app-worker-ids": [
]
}
}
}
create notifications-broadcast
Request
Endpoint
POST http://api.cirro.io/v1/notifications-broadcasts
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjN9.Neyzc4CX3wYOgYiHZ7L3uxC6sygcXTIgyIPo4w_n8Gnvv_WVkJV4Y8lK0a79Q3rOx1T-J1PNqOrj0sW766Qy0n4T5xbnbEEk-s-wexo52-1bEhmAwsGgLhEEdMgYg5BK43PwwouUOD4yKYkZCJdg2hM0K7-PT_Q3Sut04Zy7XBi4veyIWvf_T1ErEgaB9QeZKENWZhsbst51JgAFP8EvbWp9Os6dV_V8JRxoADIUu1A9FBjn1FXKEO09tFJPX5THF4_SrQnLprjoMH6fy1b4bZh2pxk-RdVD1AcRT8ZW8E42NR-eTNB-apMBuf7vWngK6BGP0WVg0DEAvHxjr8GjFw
POST http://api.cirro.io/v1/notifications-broadcasts
Parameters
{"data":{"type":"notifications-broadcasts","attributes":{"payload":{"key":"value"},"app-worker-ids":[201,202]},"relationships":{"channel":{"data":{"type":"notifications-channels","id":8}}}}}
Name | Description |
---|---|
type required | Should always be set to notifications-broadcasts . |
attributes[payload] required | Payload of the notifications broadcast to pass to the channel templates in order to render them |
attributes[app-user-ids] | One of the 3 ways to specify the recipient(s) of the notification. |
attributes[app-worker-ids] | One of the 3 ways to specify the recipient(s) of the notification. |
relationships[channel] required | Associate the broadcast to a notifications channel |
relationships[worker-filter] | One of the 3 ways to specify the recipient(s) of the notification. |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "4",
"type": "notifications-broadcasts",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-broadcasts/4"
},
"attributes": {
"payload": {
"key": "value"
},
"app-user-ids": [
],
"app-worker-ids": [
201,
202
]
}
}
}
create notifications-broadcast
Request
Endpoint
POST http://api.cirro.io/v1/notifications-broadcasts
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjR9.hc7K0VAmPoSn4W1Pw_9ccJmwbskhiJFDvJbiIrfH2TXRNpG2Jkj2IUaDoE4q0Fb10G-I3EqThC0_et4H_l_OIl-8-ZeAXeIDS22d_zN9XdSACv4g85jiWXTvhbFiOPWBX_Q5ufMgFeBNiBKpJ7_qCma9IgPYfpEMWn45DP1yMukKUlSl0NOTg6ePoBTtfHvADCEBXF8IQiPKJuYh3-itA0oT_nPQ0kQz0nI6brf0yxOJmyItzBHsGPqLjpBkqv53iuPTFCWyJ3Z2PAajkygsPWABn_9bAcrGMsWV3l64O3mr4X7_51yFB0yHvuWLhns-utCxxRatI1kVd4z27Bdq6Q
POST http://api.cirro.io/v1/notifications-broadcasts
Parameters
{"data":{"type":"notifications-broadcasts","attributes":{"payload":[{"203":{"key":203}},{"204":{"key":204}}],"app-worker-ids":[203,204]},"relationships":{"channel":{"data":{"type":"notifications-channels","id":9}}}}}
Name | Description |
---|---|
type required | Should always be set to notifications-broadcasts . |
attributes[payload] required | Payload of the notifications broadcast to pass to the channel templates in order to render them |
attributes[app-user-ids] | One of the 3 ways to specify the recipient(s) of the notification. |
attributes[app-worker-ids] | One of the 3 ways to specify the recipient(s) of the notification. |
relationships[channel] required | Associate the broadcast to a notifications channel |
relationships[worker-filter] | One of the 3 ways to specify the recipient(s) of the notification. |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "5",
"type": "notifications-broadcasts",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-broadcasts/5"
},
"attributes": {
"payload": [
{
"203": {
"key": 203
}
},
{
"204": {
"key": 204
}
}
],
"app-user-ids": [
],
"app-worker-ids": [
203,
204
]
}
}
}
NotificationsChannels
Create notifications-channel
Request
Endpoint
POST http://api.cirro.io/v1/notifications-channels
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjR9.g4uoGz8FVhmW1Wi7yd-rv8MxduMmFRp69-Z5vGvu-KvZgj4mBNpLxhp_sKFY706udRgcUlncCbmV6JEflMLzac6Mf7L_V-lnAp4nutig6kttV9n20uZgysYDYkK0_YJmBa35iZkEg9hQxI9MuFMHbmesvOgwLL4qzG0u94o5HqQ9OtWLQB7uXOxidIwfa7yfHUuvv93ygERMCXpD-bJVyAJ7heG5IOsqbskcft72Seu55pPBFDqcUJAW1c6BOVrCYIMvNIXWoBKJdqAJi7-OQmjkv7E-K7k1gGJ-rwH3JMvAu2sVgWbFqsfqYrgYV80JEhIsHCCkWIFTctalkPe_xQ
POST http://api.cirro.io/v1/notifications-channels
Parameters
{"data":{"type":"notifications-channels","attributes":{"name":"some_notifications_channel"}}}
Name | Description |
---|---|
type required | Should always be set to notifications-channels . |
attributes[name] required | Name of the notifications channel. Must be "snakecase" (lowercase letters and underscores only) |
attributes[use-default-email-layout] | Flag to set whether email notifications sent for this channel use Cirro's default email layout, or if the Space will encode both the layout and content in the appropriate NotificationsTemplate |
attributes[email-preference] | Default email preference for the notifications channel. Must be one of ["immediately", "digest_hourly", "never"] |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "13",
"type": "notifications-channels",
"attributes": {
"name": "some_notifications_channel",
"use-default-email-layout": true,
"email-preference": "immediately"
}
}
}
Delete notifications-channel
Request
Endpoint
DELETE http://api.cirro.io/v1/notifications-channels/18
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjV9.Zt4hB_zqJfYlhrjqalMChwDm3Mvm5nkK7PnmY7y4fF9yFHtYJR_LYiDGU6OP9GGWn0qTsuhzN08wfUDY1qwcmbnPcu4KLKAyV31n347czVmstk0fOtUw2GFD7brotTSzz5pFgxi9lS1FsVl1E6YZP3aJ477wyjcgtuxNgbD3gECgRPW8ixEJKm_Lod6jZdT_ef0gK4wH1f4E8MYciswjNZ1-nVZslyhLVUbpLIRwWXRPWFUni6ktyQBBVjOjPHJjlXjTHG4Owb9snDe7IE3kNYGvGSWbTDBg_PSKvcpSfT3w39iK9qB-01dCWy5PG6aqLBlUCrmkDmrF_7QjcM8cMA
DELETE http://api.cirro.io/v1/notifications-channels/:id
Parameters
{"data":{"type":"notifications-channels","id":"18"}}
Name | Description |
---|---|
id required | ID of the notifications channel to be deleted. |
type required | Should always be set to notifications-channels . |
Response
204 No Content
Get a notifications-channels
Request
Endpoint
GET http://api.cirro.io/v1/notifications-channels/14
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjR9.QCESb-0p9cKTdYfb9ZQA8LDsoDwCPZ_pRfz_AX-PtfrGdCvrCmnwTOPrQX9iqO7FJHvWt0UbedHWu_7r3TxWPkfQLcc_7vBIqtqIgL_1of6HDCeF6peIHuliOy40H4ysVTAlZYmZyP-ShuQ5IMye9qLGT1f6V0--XMlGL0eGbYh0fqtxz1Sj7NSpkal7wnzSG1qREI8m7EC-l0PZdFJf45lBrUbW_Go5GCXeKwmULR3V3upHFRQdV6uWWbvK_N0bBaMkQYiH56SidZexCqpR8dmdJAYMDQIfYzZvkNhHXsyH2rIO_VGq9xsPZH1aj1xCauTg6nJHKFirUUzapH2iHw
GET http://api.cirro.io/v1/notifications-channels/:id
Parameters
Name | Description |
---|---|
id required | ID of the notifications channel. |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "14",
"type": "notifications-channels",
"attributes": {
"name": "factory_notifications_channel",
"use-default-email-layout": true,
"email-preference": "immediately"
}
}
}
Get all notifications-channels for app making the call
Request
Endpoint
GET http://api.cirro.io/v1/notifications-channels
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjR9.QLDjfzDKXJURu7FAhbDpHnfLGdInETCOoGniJmKR4a3ht3qtA9oy-gLesnuAQ-dATLveF-9yj0WmtpXioc9Ov-tRfKMiv0FXCE-IleYTz9r8pS0-BzR24NAoPTxY0DYSk9bww_Diybl2tqoN5Kkg3fGeH4W96Rqm8AoN6bL66K2QnPsBXXCBxlnKVU9vok1s0cZE57STkaIe627dBUG0kvgFLTatPf7VNpnTrczzka7ZAlPKQswtRP1iNFLmpx-c1FYlQkafSpS8IqHbxEcNZ2btjh1rc4VsR5wKgC9Qc6bMql1nL2bNs26S5Zy378716KyV39qGq-upVq-6uFQzYA
GET http://api.cirro.io/v1/notifications-channels
Parameters
None known.
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": [
{
"id": "2",
"type": "notifications-channels",
"attributes": {
"name": "new_gig_invitation",
"use-default-email-layout": true,
"email-preference": "immediately"
}
},
{
"id": "12",
"type": "notifications-channels",
"attributes": {
"name": "factory_notifications_channel",
"use-default-email-layout": true,
"email-preference": "immediately"
}
}
]
}
Update notifications-channel
Request
Endpoint
PATCH http://api.cirro.io/v1/notifications-channels/16
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjV9.rHcm38MAVKp25Dpq4k7cdLzs0NXgJV8c5pN5zThJx0vCTzrWggYy7E-RS6qLF4GxOfoWHxNnwvfzIHYZIxlX9Wm1zb6Mej9589H0YIbLqdVNMuv3rWJ2wmGXgVcG2T2zwQC-E2p_jMJQucmPToLBuU_WT5ocdcpaXD8szlTu04TOoVTb2Yeptr9nttvhGl5vIda3QlMz3-h7bIiAi9TGK4phxO2bk0svZYOK3U3J9HYr51016F2G0HrVj8Z6L9H0v3TANWDX9bIt-3EtTL73n55LP-QTUH8DIkWkB2ge8Wbnajv4gNna6KI8yszIzXZ1n6gHZYa3TYi0VdvVYxhmwA
PATCH http://api.cirro.io/v1/notifications-channels/:id
Parameters
{"data":{"type":"notifications-channels","attributes":{"name":"new_channel_name"},"id":"16"}}
Name | Description |
---|---|
id required | ID of the notifications channel to be updated. |
type required | Should always be set to notifications-channels . |
attributes[name] | Name of the notifications channel. Must be "snakecase" (lowercase letters and underscores only) |
attributes[use-default-email-layout] | Flag to set whether email notifications sent for this channel use Cirro's default email layout, or if the Space will encode both the layout and content in the appropriate NotificationsTemplate |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "16",
"type": "notifications-channels",
"attributes": {
"name": "new_channel_name",
"use-default-email-layout": true,
"email-preference": "immediately"
}
}
}
NotificationsTemplates
Create notifications-template
Request
Endpoint
POST http://api.cirro.io/v1/notifications-templates
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjZ9.rghMgV1IB4RP8jGhXD6uNKPhyMqXshDoJF5mtHu1fSQwRNjv7EiN_0862nFfJ4aHGEbUu8O6cwcEj7FrupREoCy7OqD4KEFm9IfX0gFOW9wDHruspaaL4E6mlsRXIqq2FqKGDY9OTdA8jw-2o_TEGm2r8Im9r0vc1Ck7w6EeF1FhkJn3LkZJj1ZLpi6ODYwJB7GM854hSjHWsLBeDhscVGyaYjAWSW5U8I_3GpMlFqnZeyQ_szAWJOuoZ44wCMFMgJt0U7irJuqy5Mg5q79Prj2FsrdNbG4KCt0avkUG3wtJvBRnbPYIbjPauwB8-ddGh5V8yb4wEVi0wvP0bs0o8w
POST http://api.cirro.io/v1/notifications-templates
Parameters
{"data":{"type":"notifications-templates","attributes":{"subject":"some notifications template subject","body":"the body...","deliver-by":"in_app","format":"text","kind":"standalone"},"relationships":{"channel":{"data":{"type":"notifications-channels","id":21}}}}}
Name | Description |
---|---|
type required | Should always be set to notifications-templates . |
attributes[subject] required | Subject of the notifications template |
attributes[body] required | Body of the notifications template |
attributes[deliver-by] required | Delivery mechanism of the notifications template. Must be one of ["email", "in_app"] |
attributes[format] required | Format of the notifications template. Must be one of ["text", "html"] |
attributes[kind] required | kind of the notifications template. Must be one of ["standalone", "digest"] |
relationships[channel] required | Associate the template to a notifications channel |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "18",
"type": "notifications-templates",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-templates/18"
},
"attributes": {
"subject": "some notifications template subject",
"body": "the body...",
"deliver-by": "in_app",
"format": "text",
"kind": "standalone"
}
}
}
Delete notifications-template
Request
Endpoint
DELETE http://api.cirro.io/v1/notifications-templates/23
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjZ9.zmyrZI8fgO8uDeEksS9OMm16dNDaBVO4HzaJ9nqCDATwNcedYi9-hoIJAdNX01Pi8ApFVHwB3DwItf68AJCytcuoeVvURgTw8zEqVSRN_2PaUBPhhzhM09GN0TE7fyWFB2QrbsED9EhZF4LQiE03YN23nEvTFH2eyQBLegzgO6Y6E6CyGukleKBghpTY9WB9Or-KNsbebAmwGx7kqrICtfaDl41DZBGrJX8H2mhZ5lxQrDx6n-EetQZ2BeTPJW4TTsahPGJtzvVNBEXbCP-yq7OFfV6Bvh7gSiOH8PaBwEcjUZ5Z6W12vNyBRhspZQblVzD-LR4QySFFQb2NmbVifA
DELETE http://api.cirro.io/v1/notifications-templates/:id
Parameters
{"data":{"type":"notifications-templates","id":"23"}}
Name | Description |
---|---|
id required | ID of the notifications template to be deleted. |
type required | Should always be set to notifications-templates . |
Response
204 No Content
Get a notifications-templates
Request
Endpoint
GET http://api.cirro.io/v1/notifications-templates/19
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjZ9.KWcAVx8_m0p8HPgV0aSm0Rr77YNyXTNnRIe0tlx8NaLPNAYojuejKqXHtGHg9VJNsi6OX5-odwq11y59JCH1TWSD7I4pZmsq3SvxfiVDCVwxOHxTFuc0_j4J4IzKY6PmEF07futjlg6QBKm-duiL1BpNRxemHnxVvv6VEIOKTMa6gIHDAXUANKjCLM5hp5HrpMz0KiTQD7YeAFl02085VPDcuR31VVtkPnekqVJItekb50_5jbseGBo_1mkuXzQWf0J-gESHKcuNaHwAdkPd_cWlkMq88yLbOsV1IOenmZ1NzV_327qoeid7OCIZXrCgK34L8VVT1PcsdK8bOwuGTQ
GET http://api.cirro.io/v1/notifications-templates/:id
Parameters
Name | Description |
---|---|
id required | ID of the notifications template. |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "19",
"type": "notifications-templates",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-templates/19"
},
"attributes": {
"subject": "factory template subject",
"body": "factory template body with %{cirro_notice}",
"deliver-by": "in_app",
"format": "text",
"kind": "standalone"
}
}
}
Get all notifications-templates for app making the call
Request
Endpoint
GET http://api.cirro.io/v1/notifications-templates
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjV9.osDaP8_y1vpknmfeD2svkWMUJkRDgmWupLDye68vgKbjoqf8Ffk_MZUDYMYXP7Ke6Tx3FRGDZU6cx9HP2hiIOfDSHPLjyNMnEa3GzL0u6ngL1V4QCFOBu6CLddd9-wZ8yuOmtgMOHWRNe6FkVMJBujIYIUnW8KT_fM35MlPCcbV36taCx-Hec9Vol_oqgNUjEeoKRX1cl8fkOjYAjHC0Cfm8KA0emBP9TCe3J0OEd41jqvvGUtM9-hVe9ybPXDe9758MtybSeCC-8D1H5yXBcqexeErWbaO5uTgL7yYBhUlyLivMLD2kQqWXHmmY1v56TpGiGggPz18yotS5Ytqi4g
GET http://api.cirro.io/v1/notifications-templates
Parameters
None known.
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": [
{
"id": "5",
"type": "notifications-templates",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-templates/5"
},
"attributes": {
"subject": "[Cirro] Invitation - %{gig_app_name} - %{gig_title}",
"body": "<p>Hello %{recipient_first_name},</p>\n<p>There is a new gig matching your profile.</p>\n<p style=\"line-height: 40px\">Click on <a href=\"%{gig_url}\">this link</a> to access all details</p>\n",
"deliver-by": "email",
"format": "html",
"kind": "standalone"
}
},
{
"id": "6",
"type": "notifications-templates",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-templates/6"
},
"attributes": {
"subject": "[Cirro] Invitation - %{digest_count} gig%{pluralize digest_count \"\" \"s\"} \\\n %{pluralize digest_count \"is\" \"are\"} available for you on %{app_name}",
"body": "<p>Hello %{recipient_first_name},</p>\n<h1>%{digest_count} new Gig%{pluralize digest_count \"\" \"s\"}</h1>\n<p>%{pluralize digest_count \"is\" \"are\"} available on your dashboard.</p>\n<p style=\"line-height: 40px\"><a class=\"btn-primary\" href=\"%{app_url}\">Show me %{pluralize digest_count \"this\" \"all\"} gig%{pluralize digest_count \"\" \"s\"}</a></p>\n",
"deliver-by": "email",
"format": "html",
"kind": "digest"
}
},
{
"id": "7",
"type": "notifications-templates",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-templates/7"
},
"attributes": {
"subject": "[Cirro] Invitation - %{gig_app_name} - %{gig_title}",
"body": "Hello %{recipient_first_name},\n\nThere is a new gig matching your profile.\n\nClick on link below to access all details:\n\n%{gig_url}\n",
"deliver-by": "email",
"format": "text",
"kind": "standalone"
}
},
{
"id": "8",
"type": "notifications-templates",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-templates/8"
},
"attributes": {
"subject": "[Cirro] Invitation - %{digest_count} gig%{pluralize digest_count \"\" \"s\"} \\\n %{pluralize digest_count \"is\" \"are\"} available for you on %{app_name}",
"body": "Hello %{recipient_first_name},\n\n%{digest_count} new gig%{pluralize digest_count \"\" \"s\"} %{pluralize digest_count \"is\" \"are\"} available on your dashboard.\n\nClick on link below to access %{pluralize digest_count \"this\" \"all\"} gig%{pluralize digest_count \"\" \"s\"}:\n\n%{app_url}\n",
"deliver-by": "email",
"format": "text",
"kind": "digest"
}
},
{
"id": "17",
"type": "notifications-templates",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-templates/17"
},
"attributes": {
"subject": "factory template subject",
"body": "factory template body with %{cirro_notice}",
"deliver-by": "in_app",
"format": "text",
"kind": "standalone"
}
}
]
}
Update notifications-template
Request
Endpoint
PATCH http://api.cirro.io/v1/notifications-templates/21
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjZ9.HQQ3gTx7ynsis50onkVVINsKxjwf36qhLuWXgxzouAhvi10Xtc1GnswWHi4FD5LlmHy-NM-Wx7HyOBZTkYJOBciAATW2bI6C9FEoMt3D70anM7ZSyRXsIPCvLRsU7Jw_OZCwaLxxIhNATUpAJqVhbfWPLsHjcYkBnDf29Hffu1SfbpTl23FmcxWtxOIMDFcdZ8Ge0jnF55qbNLcQAAtk6yrSGFWVXlnXwZNdxq01-A0tBBGi1BsIvSx6XrROT8bL37sglmJLYLQmchxEN8aOdMVPupEOl6jWDuoiaoeRDIIfbNpCyFRN84kqR1gZEytk-DHocBwaVzm76kiTPg76vw
PATCH http://api.cirro.io/v1/notifications-templates/:id
Parameters
{"data":{"type":"notifications-templates","attributes":{"subject":"new notifications template subject","body":"new body...","deliver-by":"in_app","format":"text"},"relationships":{"channel":{"data":{"type":"notifications-channels","id":25}}},"id":"21"}}
Name | Description |
---|---|
id required | ID of the notifications template to be updated. |
type required | Should always be set to notifications-templates . |
attributes[subject] required | Subject of the notifications template |
attributes[body] required | Body of the notifications template |
attributes[deliver-by] required | Delivery mechanism of the notifications template. Must be one of ["email", "in_app"] |
attributes[format] required | Format of the notifications template. Must be one of ["text", "html"] |
relationships[channel] required | Associate the template to a notifications channel |
Response
Content-Type: application/vnd.api+json
200 OK
{
"data": {
"id": "21",
"type": "notifications-templates",
"links": {
"self": "http://api.cirro.io/api/v1/notifications-templates/21"
},
"attributes": {
"subject": "new notifications template subject",
"body": "new body...",
"deliver-by": "in_app",
"format": "text",
"kind": "standalone"
}
}
}
Payouts
Create a payout
Request
Endpoint
POST https://api.cirro.io/v1/payouts
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjd9.m-EKLWj-0TPxm7z_7l8DktR2frwdBMck1gv_GndJqaq0te-jyFsh2L2LJZ2IkQP4MbSWJJtRAgoOeagj3Uy8DPgTRUeJ0-QVXVj6C3lD4GFHV_aRm4ENCPVWhtACr2AkE_J7I-VroCjllYb1BeKk8TxMzA4pf-8tP_1yn7r-qXwVekOy4Pqsh1At3YTNfPipW99SKo4dABussCzL7GzA0_zQM-MVkW0fhJ4chaG3YwcTzAw5_UktLTeWeDiPk66bwclaloI0kjyP0127BSznpzuD_b9UrEh6RZJZFbyqrnkAVlwJz6d8BrNxnoHuXaQgBups0meOC9rCf6x62vtDlQ
POST https://api.cirro.io/v1/payouts
Parameters
{"data":{"type":"payouts","attributes":{"amount":1000,"title":"The Golden Bowl","description":"Language designers want to design the perfect language. They want to be able to say, 'My language is perfect. It can do everything.' But it's just plain impossible to design a perfect language, because there are two ways to look at a language. One way is by looking at what can be done with that language. The other is by looking at how we feel using that language-how we feel while programming.","billing-date":"2022-06-05"},"relationships":{"app-worker":{"data":{"type":"app-workers","id":"205"}},"reference":{"data":{"type":"gigs","id":"217"}}}}}
Name | Description |
---|---|
type required | MUST be payouts |
attributes[amount] required | Payment amount (in cents) |
attributes[title] required | Annotation title |
attributes[description] required | Annotation |
attributes[billing_date] required | Billing date |
attributes[cost_center_key] required | A EPAM project code for book keeping in finance. It is required if cost_center_data is not given. |
attributes[cost_center_data] required | A json string containing customer details: customer_id , company , legal_entity and inhouse . It is required if cost_center_key is not given. |
relationships[app_worker] required | The worker to be rewarded |
relationships[reference] | Payment reference |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "1",
"type": "payouts",
"links": {
"self": "https://api.cirro.io/api/v1/payouts/1"
},
"attributes": {
"amount": 1000,
"title": "The Golden Bowl",
"description": "Language designers want to design the perfect language. They want to be able to say, 'My language is perfect. It can do everything.' But it's just plain impossible to design a perfect language, because there are two ways to look at a language. One way is by looking at what can be done with that language. The other is by looking at how we feel using that language-how we feel while programming.",
"billing-date": "2022-06-05",
"external-customer-id": "EPM-CRWD",
"cost-center-key": "EPM-CRWD",
"cost-center-data": null
},
"relationships": {
"app-worker": {
"data": {
"type": "app-workers",
"id": "205"
}
},
"reference": {
"data": {
"type": "gigs",
"id": "217"
}
}
}
}
}
Delete a payout
Request
Endpoint
DELETE https://api.cirro.io/v1/payouts/10
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby11eC1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNjl9.sEe2uRWCQrXaOk9nIBl4HfIqX9bpAuz9mB30k50e1a7fNZKbeNSdrXKuDh4HxMzk-JBbI5eJh-jDUEFROdGfsNg-Hovg6Sjh_aP2q1m1LV3E9lqnbqD50tAHXDVVT4X6VVGj4BVJYUr-34mjiOKBIW26BPm4E9D3JapssgoRomzUM3xPnVDKFKZ_NsYijg0qyJbpeJ8dKveA5J3SLRZDWdSjolaWyyIuD0bCHlFG9Q53bFPsMXGlGibTFH767MgrINFegmyA_e_tblNxeVCcMRzDdJKT1iW7G7ndXh73wpCHRegD6_3kzfk1ODPtpqQxLF40odt5Ztq7tJwyk0UcAQ
DELETE https://api.cirro.io/v1/payouts/:id
Parameters
Name | Description |
---|---|
id required | ID of the payout |
Response
204 No Content
WorkerFilters
Create worker filter
Request
Endpoint
POST http://api.cirro.io/v1/worker-filters
Content-Type: application/vnd.api+json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJjaXJyby1hcHAtaWQtZGV2ZWxvcG1lbnQiLCJleHAiOjE2NTU3MTcwNzB9.iQjIySetpcWhfCPSk-TWM_T6dOvRa_f1U7kLna2BB01FnBl4Js-IC2QPtedo7YheoCmqEvbYUHKTTF2Wwy2G1W1MUhtKEDJtnQPLU_tGH_eranR-GGzykQrakfWf3PRfKlzYp9cphlAHj6wUMzX1G21i3lPm0rHEMHrvnFs3o_PcMxCeEbOA-0fvjPwZ1aHxWlvbxWKghE-CrHW10gf5OwhRgIyDG4WkpyqEA9CzK48V92zqQ4uMQAtIevpefuHSVDba9Kthhvxv-PitayQ5XgCJiBU9NZ5jv-2SjbsOVHrLGR9keYKihZdf2yxZTD1JYzm027sM8ibYYw71nj4ImA
POST http://api.cirro.io/v1/worker-filters
Parameters
{"data":{"type":"worker-filters","attributes":{"filter-query":"{ \"size.h\": { \"$lt\": 15 }, \"size.uom\": \"in\", \"status\": \"D\" }"}}}
Name | Description |
---|---|
type required | Should always be set to worker-filters . |
attributes[filter-query] required | Mongo DB query to filter workers during gig invitation |
Response
Content-Type: application/vnd.api+json
201 Created
{
"data": {
"id": "257",
"type": "worker-filters",
"links": {
"self": "http://api.cirro.io/api/v1/worker-filters/257"
},
"attributes": {
"filter-query": "{ \"size.h\": { \"$lt\": 15 }, \"size.uom\": \"in\", \"status\": \"D\" }"
}
}
}