Altru Constituent API Error

I was hoping the Altru API endpoints would become available after the lastest 5.29 update, but they still seem to be having some issues.

I am testing with the Altru Constituent API to try to get an individual from this endpoint: https://api.sky.blackbaud.com/alt-conmg/individuals/{constituent_id}

I can successfully authorize myself and get an access token, but when actually posting a constituent ID that exists in my environment to the endpoint, I get back the following error:

{
"detail": "Error processing Infinity response: <Envelope>\\n <Body>\\n <LoadDataReply>\\n <StatusOK>false</StatusOK>\\n <StatusCode>500</StatusCode>\\n <StatusMessage>Data form could not be loaded. Error converting data type nvarchar to uniqueidentifier.</StatusMessage>\\n <ErrorDetail>\\n <ServiceErrorCode>InvalidRequest</ServiceErrorCode>\\n <ServiceErrorCodeNumber>3</ServiceErrorCodeNumber>\\n <ErrorName>DataFormLoad</ErrorName>\\n <ErrorText>Data form could not be loaded. Error converting data type nvarchar to uniqueidentifier.</ErrorText>\\n <ErrorDetails>Blackbaud.AppFx.Server.ServiceException: Data form could not be loaded. Error converting data type nvarchar to uniqueidentifier. ---&gt; System.Data.SqlClient.SqlException: Error converting data type nvarchar to uniqueidentifier.\\n at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\\n at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\\n at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean&amp; dataReady)\\n at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)\\n at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task&amp; task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\\n at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task&amp; task, Boolean&amp; usedCache, Boolean asyncWrite, Boolean inRetry)\\n at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean&amp; usedCache, Boolean asyncWrite, Boolean inRetry)\\n at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()\\n at Blackbaud.AppFx.Server.DataFormLoadProcessor.ExecuteSPLoad(Int32 timeOut)\\n --- End of inner exception stack trace ---\\n at Blackbaud.AppFx.Server.DataFormLoadProcessor.ExecuteSPLoad(Int32 timeOut)\\n at Blackbaud.AppFx.Server.DataFormLoadProcessor.ProcessRequest()\\n at Blackbaud.AppFx.Server.RequestProcessor`2.GetReply()\\n at Blackbaud.AppFx.Server.AppService.DispatchSyncRequest(RequestProcessorBase processor)\\n at Blackbaud.AppFx.Server.AppService.DispatchRequest(RequestProcessorBase processor)</ErrorDetails>\\n <DataFormErrorCode>GeneralError</DataFormErrorCode>\\n <DataFormErrorCodeNumber>0</DataFormErrorCodeNumber>\\n <DataFormErrorInvalidFieldReason nil=\\"true\\" />\\n </ErrorDetail>\\n <TSLong>0</TSLong>\\n </LoadDataReply>\\n </Body>\\n</Envelope>",
"span_id": "b21d0abaf3a89d77",
"status": 400,
"title": "One or more validation errors occurred.",
"trace_id": "b40ad87790384cbf9b296181f129ed69",
"type": "urn:blackbaud:general-translation-error"
}

I get this same error when testing the same endpoint with the “Try it” functionality in the endpoint documentation and also when testing with a minimalist Flask application that is setup to test with my existing Sky Application.

Comments

  • @Avery Uslaner
    I am having the same issue. I am contacting support now and will report back when I figure out what the issue is!

  • Ashley Moose
    Ashley Moose Blackbaud Employee
    Eighth Anniversary Kudos 5 Name Dropper Participant

    @Jacky Schuler and @Avery Uslaner This error can occur when you are using the Constituent Lookup ID to call the constituent instead of the Constituent GUID. To find the GUID for a record, you can either output the System Record ID in query OR if you have a record open, navigate to the end of the URL in your browser and copy the portion after recordid=

    9fadf43a374d0eb3a7987628183b5834-huge-im

    If you still receive the error, please continue to work with Support but in my testing that worked for me.

  • @Ashley Moose
    Thanks for the suggestion! I do at least get a different error when testing with a constituent GUID:

    {
    "detail": "No meta data element found for: OPTOUTADS",
    "span_id": "827c3c8cd329057c",
    "status": 400,
    "title": "One or more validation errors occurred.",
    "trace_id": "8d6d89d2382e443f8774bcec692c6111",
    "type": "urn:blackbaud:general-translation-error"
    }

  • @Ashley Moose Thank you! I was initially using the incorrect constituent ID but it has not been working with the record ID either.

  • @Ashley Moose I am using the Constituent GUID and I am still having no luck. It may be an incorrect configuration but support has indicated that it is not (despite the bad request response).

    HTTP/1.1 400 Bad Request

    cache-control: no-store, must-revalidate, no-cache
    content-length: 494
    content-type: application/problem+json; charset=utf-8

    {
    "type": "urn:blackbaud:general-translation-error",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "detail": "One or more errors occurred. (The HTTP status code of the response was not expected (500).\\n\\nStatus: 500\\nResponse: \\n{\\"type\\":\\"urn:blackbaud:unexpected\\",\\"title\\":\\"An error has occurred.\\",\\"status\\":500,\\"trace_id\\":\\"6163----------\\",\\"span_id\\":\\"ad38-------\\"})",
    "trace_id": "6163----------",
    "span_id": "8208ad-----------"
    }

  • @Jacky Schuler Hi Jacky, I did get this working at one point so it is at least possible. I also found that the constituent search endpoint is easier to test with since you don't need a GUID.

    The 500 error that you're getting in that latest error message makes it seem like the problem is on Blackbaud's end. Maybe just a temporary issue?

  • Ashley Moose
    Ashley Moose Blackbaud Employee
    Eighth Anniversary Kudos 5 Name Dropper Participant

    @Jacky Schuler I did receive an error after the initial post a couple weeks ago and reported that internally. In testing today, I am able to use the Get an Individual endpoint and receive a successful response. If you are still receiving an error, I'd suggest testing a few other things.

    1. Does it happen with all endpoint or just this one? Per the other suggestion, trying an endpoint like the Constituent search one is a good test to verify whether the issue is with all API endpoints or perhaps just this one.

    2. If you don't receive the error with another endpoint, do you receive the error when testing with a different constituent record? If not, it may indicate a data issue with the specific record.

    3. If you do receive the error with another endpoint, do other users at your organization also receive errors? If so, this likely indicates it is a configuration issue which Support would be the best one to assist with that issue.