I haven't really been able to find anything in the documentation and the stuff on Google is about 2-3 years old, and so this is the simple question:
Is there a way to update somebody's email signature with the Outlook REST API?
If you're seeing 2yr old docs, you're looking at the wrong documentation. Graph's official documentation can be found here. This documentation is open source and against on GitHub: microsoftgraph/microsoft-graph-docs.
As to email signatures, I'm afraid this isn't available via Graph. Email signatures are stored by the Outlook client, not within the mailbox. This is why users see different signatures across desktop, mobile, and web clients.
The only settings like this available via Graph are settings stored at the mailbox level. These are accessed via mailboxSettings object: automaticRepliesSetting, language, timeZone, and workingHours.
Related
Sorry for a fuzzy newbie question but I didn't find a similar yet - maybe I'm just asking wrong..
I'm working on an open source Python application which reads and processes emails from given mailboxes using IMAP and SMTP (from various (self hosted) email providers, so a MS/Google specific implementation is not an option for me).
Currently I'm extending that application to support OAuth2 after Microsoft announced they will no longer support standard IMAP/SMTP authorization.
I found lot's of HowTos, tutorials and examples and managed to read/write mails using OAuth2 with GMail-servers now but I hope I just missed the recommended scenario for open source applications.
Currently I've set up a Google "Project" using tutorials I found in order to get ClientID and ClientSecret. Google told me it would cost me $15k to $75k to get my application verified, while Microsoft wants me to create an Azure/Identity Platform account and want's my telephone and credit card number in advance in order to bill me after 12 months.
Question: What am I supposed to provide with my application regarding OAuth2? I don't want to publish my ClientID/Secret do I? Does every user have to go through those registration procedures in order to access its mails using a command line script?
How to other open source mail-applications solve this issue? At least Thunderbird can authenticate with GMail (see https://www.supertechcrew.com/thunderbird-oauth2-gmail/) do they provide ClientID and -secret with the application?
Here is an old thread discussing the issue: https://groups.google.com/g/tb-planning/c/RRSPwp36bi0?pli=1
Disclaimer 2: I know this question sounds very obvious but I really didn't find a hint yet :)
I'm trying to query the Global Address List using Microsoft Graph. I've worked with and adapted the sample code from https://github.com/microsoftgraph/console-csharp-snippets-sample.git -- however, I'm still having trouble. I've seen this article -- Global Address List Graph API -- which indicates I need to use the "/contacts" endpoint. However, I don't see how this helps me when I'm using the Microsoft.Graph library. Is there some method or collection within the Microsoft.Graph library that will allow me to read the GAL?
"GAL" is a MAPI concept that doesn't really apply to Graph. With Graph, you just read the users or contacts in your company's Active Directory. By combining both lists, you come close to what you'd see in the GAL in a MAPI client.
To do that, you would list users as doc'ed here: https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_list
Using the library, I believe this will get you started:
client.Users.Request().GetAsync();
For contacts, it's a lot trickier with the Graph library. Organizational contacts are only supported in the beta version of Microsoft Graph, which the client library doesn't support unfortunately. (See this issue for info). Michael Mainer did a write up of how you can generate your own beta version of the library if you're interested.
The info on querying organizational contacts is found here: https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/orgcontact.
As of late 2021, doesn't appear to be an easy "Export Global Address List" API from Microsoft. There appear to be manual methods (e.g. using the Exchange Admin interface) but nothing programmatic.
Below is broad strokes exercise for creating an approximation (that may be sufficient for your needs). A more accurate exercise may be to export the GAL from a official client (e.g. Outlook/Outlook Web/Exchange Admin interface). Its possible that in some cases the GAL is user specific which may make GAL export concept significantly more involved.
GAL export exercise:
APIs:
MS Graph API (available via HTTP, e.g. GET/POST)
Users
Groups
Some of the above only allowed certain properties accessible by individual record query - I needed to get the whole list then iterate through each record one by one to get all needed properties.
Exchange Powershell (available via Powershell)
Get Mailbox (for flags not exposed by Graph/Users)
Get-DistributionGroup (for flags not exposed by Graph/Groups)
Azure Functions can be used to run these queries serverless/"API-ified". Azure App Registration can be used as OAuth app that can be granted the permissions to access the above. Microsoft Graph Explorer is handy for testing Graph requests.
Put it together:
Smash the datasets together and then filter out on fields. Some flags are:
hideFromAddressLists
hideFromOutlookClients
HiddenFromAddressListsEnabled
showInAddressList,
some conditions you have to manually check for, e.g.
if no provisioned plans (i.e. unlicensed)
if no email address
etc.
We're building a mashup app that allows you to view data and information from multiple sources in one place.
To do this we need to get all conversations in O365 Groups and have been exploring how to build a daemon job.
According to the documentation this should be supported since we have the permissions Group.Read.All and Group.ReadWrite.All.
However it seems like Groups Conversations is an exception to what you can read with an application permission with Microsoft Graph which is mentioned in a small note on the subscriptions page:
We get permissions errors when calling the API with a application permission using a certificate (fetching groups and other data works fine) so this seems to be a limitation.
This also seems to affect fetching threads which doesn't seem to have any notes regarding application permissions at all since we can't fetch those either.
Does anybody know if there is a workaround or if we're doing something wrong here?
(NOTE: This seems to be a related question: Microsoft Graph API : "403 forbidden" error when getting groups conversations but I'd like to have some input from Microsoft on this)
Microsoft confirmed this as being an issue in the Microsoft Graph through our partner programme.
Until fixed by Microsoft this means that there is no good solution except workarounds as of now.
I have added the Twitter and Google Drive app to my Slack team. For an ERP system I am currently working on, I’d like to replace certain URLs similar to how Twitter / Google Drive do:
Google Drive:
Your message containing the link will be changed into a share message
point to the external reference file in Slack
Twitter:
Automatically expand pasted Twitter URLs, displaying the full tweet
and attached media
The obvious way seems to be using an Outgoing Webhook with the first part of the URL (e.g. https://erp.acme.com) as "trigger word", but this doesn’t seem to be working with private groups and channels. Google Drive doesn’t seem to have this limitation. Which API offers enough flexibility?
An engineer from Slack replied and offered two solutions. Thanks Brad!
Solution A
Set the outgoing webhook trigger to <https://erp.acme.com – note the opening <, as that's how URLs are parsed on Slack's side. The outgoing webhooks currently only work in public channels.
Solution B
Provide meta tags to make use of Slack's "unfurling".
You can read the link expanding documentation here, as well as this in-depth blog post about Slack unfurling.
Can I use the REST API to filter out users who have not signed in during the last three months?
(I have admin access if that is needed).
Someone correct me if I'm wrong, but from what I know it's not available out of the box. You would probably need to implement a REST plugin module which would get this data from database (or find an existing plugin that does this - I haven't).
There's a page on Atlassian's Confluence that gives you SQLs to get the last login timestamp for a user (and it seems quite up-to-date): https://confluence.atlassian.com/display/JIRAKB/Retrieve+last+login+dates+for+users+from+the+database
Please note that you would have to think about security when developing such a plugin. I have not really considered this, but there might be reasons to include permission restrictions for such a REST resource.
EDIT: I might have found an API (not REST) that exposes login information without the need to query the database (untested): https://developer.atlassian.com/static/javadoc/jira/reference/com/atlassian/jira/bc/security/login/LoginInfo.html
Unfortunately, the JIRA REST API doesn't provide this resource. The latest supported methods can be found on the JIRA REST API Reference Page.
These methods can be tested on your current installation using the JIRA REST API Browser.
The links above contain all of the info you need on the REST API. If you're still interested in using REST, you can always create your own method for retrieving the user list.
Of course, you could use other methods, like SQL, for example. There are a number of plugins available here.