Amazon Pinpoint
Amazon Pinpoint (pinpoint) on fakecloud: a complete 122-operation control plane (100% conformance). restJson1.
fakecloud implements Amazon Pinpoint as a restJson1 service. All 122 operations ship with 100% conformance against AWS's own Smithy model, backed by account-partitioned state that persists across restarts in persistent mode. Pinpoint signs SigV4 with the mobiletargeting scope (aliased internally to pinpoint) and is routed by HTTP method plus @http URI path under the /v1 prefix (POST /v1/apps, GET /v1/apps/{ApplicationId}, PUT /v1/apps/{ApplicationId}/campaigns/{CampaignId}, POST /v1/templates/{TemplateName}/email, GET /v1/tags/{ResourceArn}, ...).
Amazon Pinpoint on fakecloud is a faithful control plane: every CreateApp / CreateCampaign / CreateSegment / CreateJourney / Create<Type>Template is reflected by its Get* / List*, every Update bumps the version and is listed by the matching Get*Versions, and every Delete deletes.
Resources
- Apps (projects).
CreateAppmints a 32-hex application id plus anarn:aws:mobiletargeting:<region>:<account>:apps/<id>ARN and stores the name and tags.GetApp/DeleteAppproject theApplicationResponse;GetAppspaginates with a round-tripping token.GetApplicationSettings/UpdateApplicationSettingsstore and return the campaign-hook / limits / quiet-time settings resource. - Campaigns & Segments. Versioned: each
UpdateCampaign/UpdateSegmentbumpsVersionand appends a version record, andGetCampaignVersions/GetSegmentVersions(plus the by-version reads) list them.CreateSegmentderivesSegmentType(IMPORTwhen an import definition is supplied, elseDIMENSIONAL).GetCampaignActivities,GetSegmentImportJobs, andGetSegmentExportJobsreturn their (empty) lists. - Endpoints & Users. Endpoints are stored per
(appId, endpointId)with their address / channel / attributes / user / opt-out;UpdateEndpointsBatchupserts many;GetUserEndpoints/DeleteUserEndpointsoperate over the endpoints sharing aUser.UserId;RemoveAttributesclears an attribute set. - Channels. Each platform channel (ADM, APNS + sandbox / VoIP / VoIP-sandbox variants, Baidu, Email, GCM, SMS, Voice) stores its
Enabledflag and echoes it back onGet/Updatewith the platform-specificPlatformvalue.GetChannelsreturns the configured channel map. - Journeys.
CreateJourneystarts inDRAFT;UpdateJourneyStatedrives theDRAFT->ACTIVE-> ... state machine;GetJourneyRunspaginates the run list. - Templates. Email / Push / SMS / Voice / InApp templates are versioned;
Create/Updateappend a version,UpdateTemplateActiveVersionpins the active one, andListTemplates/ListTemplateVersionspaginate. - Import / Export jobs & Event streams. Jobs mint a
JobIdand are stored settled toCOMPLETED.PutEventStream/GetEventStream/DeleteEventStreamstore the Kinesis/Firehose destination ARN plus role. - Recommender configurations & Tags. Recommenders are a global, persisted resource family; tags are ARN-keyed (
TagResource/UntagResource/ListTagsForResource).
Model-derived validation rejects contract violations with the error codes Pinpoint declares (BadRequestException, NotFoundException, ForbiddenException, TooManyRequestsException, InternalServerErrorException, PayloadTooLargeException, MethodNotAllowedException, ConflictException). State is account-partitioned and persisted.
Honest gaps
fakecloud's Pinpoint is a control plane, not a delivery engine:
- No real message delivery.
SendMessages,SendUsersMessages,SendOTPMessage,PutEvents, andVerifyOTPMessagevalidate their input and return a structurally-correctMessageResponse/SendUsersMessageResponsewith a per-address delivery-status entry, but transmit nothing to any email / SMS / push provider. - No analytics engine. The KPI / execution-metric reads (
GetApplicationDateRangeKpi,GetCampaignDateRangeKpi,GetJourneyDateRangeKpi,GetJourneyExecutionMetrics, and the run / activity-metric variants) return well-formed responses with an empty / zeroed metric result set rather than fabricated numbers. - No S3 job processing. Import / export jobs mint a job id and settle to
COMPLETEDso the read path is realistic, but no CSV/JSON is actually read from or written to S3.