Create Calendar Feed
curl --request POST \
--url https://api.signa.so/v1/calendar-feeds \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/calendar-feeds"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/calendar-feeds', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/calendar-feeds",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signa.so/v1/calendar-feeds"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.signa.so/v1/calendar-feeds")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/calendar-feeds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyDeadlines
Create Calendar Feed
Get a calendar URL that Google Calendar, Outlook or Apple Calendar subscribes to
POST
/
v1
/
calendar-feeds
Create Calendar Feed
curl --request POST \
--url https://api.signa.so/v1/calendar-feeds \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/calendar-feeds"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/calendar-feeds', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/calendar-feeds",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signa.so/v1/calendar-feeds"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.signa.so/v1/calendar-feeds")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/calendar-feeds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyCredits: 0 per request.
Creates a secret iCalendar URL for your docket. Subscribe to it once and your
calendar app keeps it current on its own. Requires
The response is the feed with
What the calendar holds, and how to subscribe in each calendar app, is in
Calendar Feeds.
portfolios:manage and an
Idempotency-Key header. Free.
| Field | Required | Meaning |
|---|---|---|
name | yes | The calendar’s name in the calendar app. Up to 100 characters. |
portfolio_id | no | Limit the feed to one portfolio. Omit it for the whole docket. 404 for a portfolio outside your organization. |
201 Created and its url. The URL is shown
once. Signa stores only a hash of it, so it is not in
List Calendar Feeds, and a
replay of the request with the same Idempotency-Key returns the feed without
it. Anyone with the URL can read the calendar: share it as you would a
password, and revoke it with
Delete Calendar Feed if it
leaks.
An organization can have 20 feeds. A 21st returns 409
resource_quota_exceeded; revoke one you no longer use.
const feed = await signa.calendarFeeds.create({
name: 'Trademark deadlines',
portfolio_id: 'ptf_019d2141-6ce9-771b-872e-bc8b20e49fcf',
});
console.log(feed.url); // https://api.signa.so/calendar/sgcal_….ics