Sign inGet Started

Get what a registration needs

GET
/v1/compliance/requirements
const requirement = await bird.complianceRequirements.get({
  subject_kind: "number",
  subject_id: "nda_01krdgeqcxet5s7t44vh8rt9mg",
  country_code: "US",
});
for (const field of requirement.fields ?? []) {
  console.log(field.key, field.state);
}
Risposta200
{
  "next": [
    {
      "kind": "operation"
    }
  ],
  "subject_kind": "sms_sender",
  "subject_id": "scr_01krdgeqcxet5s7t44vh8rt9mg",
  "program": "alpha",
  "country_code": "US",
  "submission_id": "csb_01krdgeqcxet5s7t44vh8rt9mg",
  "obligation": {
    "reason": "policy_change",
    "state": "open"
  },
  "fields": [
    {
      "data_type": "string",
      "attachment_id": "tca_01krdgeqcxet5s7t44vh8rt9mg",
      "attachment_ids": [
        "tca_01krdgeqcxet5s7t44vh8rt9mg"
      ],
      "state": "not_supplied"
    }
  ]
}

Returns everything a country requires before a registration can be approved, in the order to present it, along with what you have already supplied and where each item stands.

Everything you need to answer an item comes back with it. That covers the accepted values where an item takes a fixed set, the constraints a value must satisfy, and guidance on what a good answer looks like. Items that take a document say so, and some offer a blank form to download and complete. An unsupported country returns 422 rather than an empty result.

This answers one country for one registration you already hold. Omit subject_id and it answers the form alone, unanswered: every requirement reads not_supplied, nothing is satisfied, and there is no submission behind it, which is the state a registration you have not started is in anyway. Reading it that way needs program, since the coordinate is otherwise resolved from the registration.

For a number you hold, pass its ID from GET /v1/numbers as subject_id. For an SMS sender, call GET /v1/sms/senders/{sender_id}/requirements and pass a row's registration_id as subject_id.

Parametri di query

subject_kindstring

What you are registering.

Possible values: sms_sender, number, identity

subject_idstring

The registration to answer for. Omit it to read the form on its own, before you hold anything to register: the requirements come back unanswered, which is what to do when you are deciding whether to take a number or a sender on in the first place. Omitting it makes program required, since the coordinate is otherwise resolved from the subject. When you do supply it, it is an scr_ id when subject_kind is sms_sender, an nda_ id when it is number, and a cid_ party id when it is identity.

country_codestring

The destination country. For identity send ZZ, the international coordinate: your business registers once, not per country.

programstring

The programme to read. Optional alongside subject_id, because a registration is under exactly one programme and that is the one used; supply it there only to confirm the programme you expect, since one that is not the registration's own returns a 422, as does supplying one at all for a country that runs no registration programme. Required when subject_id is omitted, because there is then no registration to resolve it from and a country can run more than one.

Possible values (may grow over time): alpha, numeric, mobile, local, national, short_code, short_code_fteu, toll_free, business

identity_idstring

Prefill the business details from a party you have already described. Requirements that ask about the party come back carrying its answers, marked prefilled; requirements about this sender never prefill because you write the sender's intended use fresh each time. Anything you have already filed for this registration wins over the party's answer.

Payload di risposta

next
array of object

What to do next about this country's requirements, given the state it is in. Each entry names one action and says why it is worth taking, so you can act on this response without working out the order yourself. Present on reads that compute it: an empty list means there is nothing to do, and the field is absent entirely on responses that do not report next actions.

Whether anything is asked of you is needs_input, and this says what to do about it: send your answers where none have been filed, or replace the ones that were refused. Which items those are, and why each was refused, is on the item in fields. For feedback about the whole submission, read reason and general_reasons and update the details that need correction.

Mostra attributi secondari
next.kind
string
obbligatorio

What you do about this step.

  • operation: call the operation named in operation, then read again.
  • external: act somewhere this API does not reach, then read again.
  • wait: nothing is asked of you, so read again later.
  • terminal: nothing you do resolves this, so stop retrying.

Tolerate a value you do not recognize: show the description and offer no action.

Possible values (may grow over time): operation, external, wait, terminal

next.description
string
obbligatorio

A short, human-readable label for the step, suitable for display.

next.operation
string

The operationId to call. Present only when kind is operation. The operation's own schema says how to call it; this says only which one, and what to address it with.

next.params
object

The parameters that address the operation, by name: {"sender_id": "…"} for an operation on /v1/sms/senders/{sender_id}/requirements. A parameter the operation takes in its query string is given the same way, so an operation addressed as ?subject_id= carries {"subject_id": "…"}. Every parameter the call needs is here, whether its value came from the thing you were acting on or is fixed for this step, so you can make the call from this object alone. Present only when kind is operation and the operation names a subject. A request body, when the operation takes one, is described by the operation's own schema and never appears here.

next.url
string

A URL to open. Present only when kind is external, and only when the step has one. An external step whose description says to go and do something with no URL to open is normal.

subject_kind
string
obbligatorio
subject_id
nullable string
obbligatorio

The registration these requirements are for, the same one you asked about. null when you asked without one, which is how a form read on its own says it is answering for nothing yet.

program
nullable string
obbligatorio

The registration program these requirements belong to. null when the country runs no registration program at all, in which case nothing is required and the field list is empty.

country_code
string
obbligatorio
satisfied
boolean
obbligatorio

Whether this country's requirements are met. true when no requirements apply, or once the submission is approved and every required requirement is approved or marked not applicable. This can remain true when an external verifier requests a correction. Once you submit that correction, it must pass review before this becomes true again, including any optional answers you change.

needs_input
boolean
obbligatorio

Whether anything is waiting on you. True when a required requirement has no answer, its answer was refused or has gone stale, or the registration needs correction as described by reason. False does not imply that review is pending: a closed verifier correction can leave the requirements unsatisfied with no editable answers. Read review_pending to determine whether an answer is awaiting review. Read this independently of satisfied, which reports whether your paperwork is accepted. An unresolved verifier correction also sets it while the matching grant is live and the correction deadline has not passed, until you supply updated details. At the deadline or after grant withdrawal, an unresolved rejection alone does not set it because accepted answers can no longer be replaced. A corrected optional answer that is rejected or expires still needs your input through ordinary resupply, including after that deadline.

review_pending
boolean
obbligatorio

Whether any submitted answer is awaiting or undergoing review. False after all answers have received verdicts. A closed verifier correction can remain unsatisfied with no review pending and no editable answers.

reason
nullable string
obbligatorio

What to correct about the registration as a whole, or null when no registration-wide correction is requested. Reasons about individual answers are on the entries in fields.

guidance
nullable string
obbligatorio

What this country expects of you before and while you fill in the form, written by Bird's compliance team. It may point you to a registration you must complete elsewhere first. null when the form needs no introduction, or when no program applies.

submission_id
nullable string
obbligatorio

The submission carrying your answers, once you have made one. null before that.

obligation
nullable object
obbligatorio

What this registration has to do to keep sending, and by when. Null when nothing is outstanding. An obligation does not stop you sending: the registration stays authorised until the date passes, and supplying what is asked for before then closes it with no interruption.

Mostra attributi secondari
general_reasons
array of string
obbligatorio

Feedback about the submission as a whole from an external verifier. It can remain visible while corrections are under review. Empty when no unresolved verifier feedback applies. On requirements responses, read needs_input to determine whether action is needed and editable_for_verifier_repair on each field to determine whether an approved or not-applicable answer can be replaced.

fields
array of object
obbligatorio

Every requirement for this country, in the order to present them.

Mostra attributi secondari
closed_at
nullable string

When the submission for these requirements was closed. Null while open or not yet submitted.

Continua con la documentazione, le guide e gli esempi per questo argomento.